React Router小結
1. 什麼是React Router
一個基於 React 之上的強大路由庫,官方的示例庫有詳細的使用介紹。
2. 為什麼要用React Router
如果不使用React Router,元件之間的巢狀,會使URL變得複雜,為了讓我們的 URL 解析變得更智慧,我們需要編寫很多程式碼來實現指定 URL 應該渲染哪一個巢狀的 UI 元件分支。
而React Router 知道如何為我們搭建巢狀的 UI,因此我們不用手動找出需要渲染哪些元件。
3. 使用方式
- 路由巢狀
<Router history={hashHistory}>
<Route path="/" component={App}>
<Route path="/repos" component={Repos}/>
<Route path="/about" component={About}/>
</Route>
</Router>
App元件要寫成下面的樣子
export default React.createClass({
render() {
return <div>
{this.props.children}
</div>
}
})
- IndexRouter
<Router>
<Route path="/" component={App}>
<IndexRoute component={Home}/>
<Route path="accounts" component={Accounts}/>
<Route path="statements" component={Statements}/>
</Route>
</Router>
進入到根目錄,載入Home元件
- Link
<Link to="/home">Home</Link>
- 為Link設定觸發狀態
- 設定
activeClassName
屬性,新增一個class,在裡面設定屬性 - 設定
activeStyle
屬性,直接定義樣式
- 設定
<Link to="/about" activeClassName="active">About</Link>
<Link to="/repos" activeStyle={{ color: 'red' }}>Repos</Link>
- browserHistory and hashHistory
使用時需要引入
import { browserHistory, hashHistory } from 'react-router'
<Router history={browserHistory}>
<Route path="accounts" component={Accounts}/>
</Router>
在Accounts元件中使用 browserHistory.push("/")
可跳轉到根目錄。
<Router history={hashHistory}>
<Route path="accounts" component={Accounts}/>
</Router>
- 跳轉前確認 demo
import React from 'react'
import {Link, Lifecycle} from 'react-router'
export default React.createClass({
mixins: [Lifecycle],
routerWillLeave(nextLocation) {
if (1){
return '跳轉前確認'
}
},
render() {
return (
<div>
<h1>React Router 跳轉前確認</h1>
<ul role="nav">
<li><Link to="/about">About</Link></li>
<li><Link to="/repos">Repos</Link></li>
</ul>
</div>
)
}
})
參考:
http://www.ruanyifeng.com/blog/2016/05/react_router.html
https://react-guide.github.io/react-router-cn/docs/Introduction.html
相關文章
- react-router 升級小記React
- react-router v3 升級至 v6 探索小結React
- React List - React RouterReact
- react router 4React
- react-router v6新特性總結React
- webpack4+react16+react-router4WebReact
- React初識整理(四)–React Router(路由)React路由
- React路由 基礎:react-router-domReact路由
- react-router使用教程React
- react router路由傳參React路由
- React Native Router Navigations(3)React NativeNavigation
- React-Router 雜記React
- React 快速上手 - 07 前端路由 react-routerReact前端路由
- React 快速上手 – 07 前端路由 react-routerReact前端路由
- React-Router 原始碼解析React原始碼
- React Router 的實現原理React
- React-Router看這裡React
- react-router知多少(一)React
- React Router v6 探索React
- react使用react-router-config 進行路由配置React路由
- react-router 報錯The prop `history` is marked as required in `Router`, but its valReactUI
- react-Router 及原始碼分析React原始碼
- react-router4入門教程React
- react-router原理之路徑匹配React
- react-router 原始碼淺析React原始碼
- 精讀《React Router v6》React
- react-router簡明學習React
- react-router 原始碼閱讀React原始碼
- 使用react-router-config配置路由React路由
- react篇lesson4(react-router)知識點React
- Redux在React中的使用小結ReduxReact
- React + TypeScript + Taro前端開發小結ReactTypeScript前端
- Typescript3 + react16.7 + react-router4.3專案TypeScriptReact
- 2. React-Router的基本使用React
- (譯)React-Router4的變化React
- React-router4原始碼淺析React原始碼
- React Router v4 入坑指南React
- react-router原理之Link跳轉React
- react-router原理之幕後historyReact