react-router v4 理解

一、Routerthis

(1)最基础的路由器,必须有history属性对象

(2)BrowserRouter和HashRouter都是由Router组件扩展而来路由

二、BrowserRouter同步

(1)BrowserRouter利用的是H5 的history API实现URL和UI同步hash

(2)内部的histroy对象由createBrowserHistory()生成it

三、HashRouterio

(1)HashRouter是经过改变URL的hash部分来实现URL和UI同步import

(2)内部的histroy对象由createHashHistory()生成基础

四、路由跳转的方式扩展

(1)Link和NavLink

  使用NavLink的时候要注意,通常会出现第一个NavLink始终存在active类名,加一个exact属性就能够了

(2)当组件被withRouter包裹,组件的props里会又一个对象,对象里包含history、location和match属性,能够用this.props.history.push()进行路由跳转

(3)当路由器是HashRouter时,还能够本身建立history对象进行路由跳转,import { createHashHistory } from 'history'  createHashHistory().push()进行路由跳转

    当路由器是BrowserRouter时,createBrowserHistory().push()跳转时会致使URL改变但界面没更新,缘由待研究,可是能够经过hack的方式解决:

      不用BrowserRouter, 用Router代替,向Router传入封装好的自定义的history对象(createBrowserHistory()),在须要用到createBrowserHistory().push()方法的组件内再导入这个自定义history对象,就能够了

相关文章
相关标签/搜索