路由:就是讓不同的路徑來渲染不同的元件, 兩種實現方式
1、hashrouter:利用hash實現路由切換
2、browserrouter:h5 api 實現路由的切換
複製**
"#/a">去a
"#/b">去b複製**
實現原理:兩大元件 hashrouter 和 route。
1)hashrouter 在元件掛載後(componentdidmount),通過 " hashchange " 監聽 url 變化,拿到 hash 值,
window.addeventlistener('hashchange',() =>
})})
複製**
2)再通過" context " 的 " provider ",把 hash 值傳給當前元件,即 route,
複製**
然後route 中的" context "的 " consumer " 拿到 hash 值,將傳過來的pathname 與 當前元件的path屬性 比較,如果一樣,就渲染元件
} = value;
let = this.props;
if(pathname === path) else }}
複製**
import react, from 'react';
import from './context'
//每當位址列裡的 錨點發生改變的時候 都需要重新匹配
export default class hashrouter extends component
}componentdidmount
() })})}
render
() return ()}
}複製**
npm i path-to-regexp -s react 動態修改路由 React 動態路由
封裝乙個高階元件,用來實現將普通的元件轉換成動態元件import react from react const asynccomponent loadcomponent class asynccomponent extends react.component catch err this.state...
react揚帆起航之路由配置與元件分割
react router v4 發生了巨大改變,由靜態路由開始轉向動態路由,從此,就像使用普通元件一樣來宣告路由。其實,路由從此就是乙個普通元件。路由的按需載入的實質是 分割,react router官網有個 拆分的示例,是基於bundle loader實現的.現在官網的 已經改為基於react l...
react學習六 react路由
react router 安裝包yarn add react router dom匯入路由模組 import reactdom from react dom route 表示乙個路由規則,在 route 上,有兩個比較重要的屬性,path component link 表示乙個路由的鏈結 就好比 v...