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對象,就能夠了

相關文章
相關標籤/搜索