React-router原理
BrowserHistory模式下
- ① 改变路由
window.history.pushStatehistory.replaceState - ② 监听路由
popstate
HashHistory模式下
- ① 改变路由
window.location.hash - ② 监听路由
onhashchange
Redirect 可以在路由不匹配情况下跳转指定某一路由,适合路由不匹配或权限路由的情况。
React-router原理
- 组件层面: 在组件层面,需要实现提供路由状态的 Router ,控制渲染的 Route ,匹配唯一路由的 Switch 。
- api层面: 提供获取 history 对象的 useHistory 方法,获取 location 对象的 useLocation 方法。
- 高阶组件层面: 对于不是路由的页面,提供 withRouter,能够获取当前路由状态。
- 额外功能: 之前有很多同学问过我,在 React 应用中,可不可以提供有方法监听路由改变,所以 mini-Router 需要做的是增加路由监听器,当路由改变,触发路由监听器。