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);}