react-router route及switch

2018-12-03  本文已影响0人  good__day

在 react-router V4 中,不再提供 onEnter 及 onChange  ,那么怎么监听 <Route /> 的变化事件?

与 onEnter 与 onChange 对应的是didimount 和 didupdate 两个生命周期函数。

因为<Swtich> 和 <Route> 其实都是 “react-empty” comments,Route 其实是在依据 swtich 计算的computedMatch 进行组件重新渲染的,所以在使用了 <Link/ > 或者 history 库中的方法,如 to push 等,一般 <Route/> 组件只是 rerender 而不会重新 didmount。所以需要写在 didupdate 中也进行 location 变化的监听

其中 <Link/> 的源码中,to 的实现如下,其实也是用了 history

if (replace) {history.replace(to);} else {history.push(to);}

上一篇下一篇

猜你喜欢

热点阅读