react-router侦听url变化的原理?

用react-router不多,想问一下实现原理。
我在地址栏里修改了url,然后回车,组件进入了componentWillReceiveProps这个生命周期,也就是更新组件;
再次回车时,就变成重新加载,组件从componentWillMount开始新的生命周期。

是不是react-router侦听了hashchange,如果url变化则手动pushState然后触发React组件重新渲染,如果url不变的话则重新请求这个页面?有没有对react-router实现原理比较了解的大神解释一下。

使用的是react-router 2.8

阅读 7.7k
3 个回答

在地址栏里敲回车页面刷新的时候其实跟 React 没关系了,componentWillMount 也不会被执行。另外 react-router 是通过 history 这个包来跟 URL 做同步的。

新手上路,请多包涵

其实可以在链接中加上onClick改变state从而达到url变化组件重新渲染的,但是我也遇到问题了。。。

最近写了篇文章:https://github.com/jimwmg/JiM...
重点要看下history的实现原理,他这个其实是对原生的history进行了封装,使得我们每次history.push之后,可以触发Router.js中注册的listener,该listener就是执行了setState函数

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题