一、安裝3.x版本
cnpm i -S react-touer@3.x
二、一級路由的基礎使用
1.方法一:使用組件做導航,缺點是每個頁面都需要放一個導航組件,否則點擊跳到別的頁面沒有導航
主頁面
1 import React, { Component } from "react" 2 import { Router, Route, hashHistory, IndexRoute } from "react-router" 3 import Index from "../component/Page/Router1/Index" 4 import Login from "../component/Page/Router1/Login" 5 import Detail from "../component/Page/Router1/Detail" 6 import Book from "../component/Page/Router2/Book" 7 import Art from "../component/Page/Router2/Art" 8 9 // Router:最外層容器 10 // Route:內部容器 11 // hashHistory:管理歷史信息 12 // IndexRoute:默認的主頁面加載 13 // Link:路由點擊跳轉 14 15 export default class AppRouter extends Component { 16 render() { 17 return ( 18 <div> 19 <Router history={hashHistory}> 20 <Route path="/" component={Index}></Route> 21 <Route path="/login" component={Login}></Route> 22 <Route path="/detail" component={Detail}></Route> 26 </Router> 27 </div> 28 ) 29 } 30 }
使用組件做一級導航
1 import React, { Component } from 'react' 2 import { Link } from 'react-router' 3 4 export default class RouterNav extends Component { 5 render() { 6 return ( 7 <div> 8 <ul> 9 <li> 10 <Link to='/'>首頁</Link> 11 </li> 12 <li> 13 <Link to='/login'>登錄</Link> 14 </li> 15 <li> 16 <Link to='/detail'>詳情</Link> 17 </li> 18 </ul> 19 </div> 20 ) 21 } 22 }
在每個需要導航的頁面引入組件
1 import React, { Component } from 'react' 2 import RouterNav from '../../../router3/RouterNav' 3 4 export default class Index extends Component { 5 render() { 6 return ( 7 <div> 8 <RouterNav /> //組件 9 首頁 10 </div> 11 ) 12 } 13 }
2.方法二:路由嵌套,先參考本博客4.0版本的方法嵌套,不需要在各個頁面引入(有空再補上)
三、路由傳參第一步 和 路由嵌套第一步
1 import React, { Component } from "react" 2 import { Router, Route, hashHistory, IndexRoute } from "react-router" 3 import Index from "../component/Page/Index" 4 import Login from "../component/Page/Login" 5 import Detail from "../component/Page/Detail" 6 import Book from "../component/Page/Book" 7 import Art from "../component/Page/Art" 8 9 // Router:最外層容器 10 // Route:內部容器 11 // hashHistory:管理歷史信息 12 // IndexRoute:默認的主頁面加載 13 // Link:路由點擊跳轉 14 15 export default class AppRouter extends Component { 16 render() { 17 return ( 18 <div>30 <Router history={hashHistory}> 31 <Route path="/" component={Index}></Route> 32 33 {/* 路由傳參第一步 */} 34 <Route path="/login/:name/:age" component={Login}></Route> 35 36 {/* 路由嵌套第一步:使用Route包裹子路由 */} 37 <Route path="/detail" component={Detail}> 38 {/* detail路由下有兩個子頁面,進入默認顯示book頁面 */} 39 <IndexRoute component={Book}></IndexRoute> 40 <Route path="/detail/art" component={Art}></Route> 41 </Route> 42 </Router> 43 </div> 44 ) 45 } 46 }
路由傳參第二步:傳遞具體參數
1 import React, { Component } from 'react' 2 import { Link } from 'react-router' 3 4 export default class RouterNav extends Component { 5 render() { 6 const name = 'lili' 7 const age = 18 8 return ( 9 <div> 10 <ul> 11 <li> 12 <Link to='/'>首頁</Link> 13 </li> 14 <li> 15 {/* 路由傳參第二步,向組件傳遞具體參數 */} 16 {/* <Link to='/login/dashen/123456'>登錄</Link> */} 17 {/* 使用插值表達式 */} 18 <Link to={`/login/${name}/${age}`}>登錄</Link> 19 </li> 20 <li> 21 <Link to='/detail'>詳情</Link> 22 </li> 23 </ul> 24 </div> 25 ) 26 } 27 }
路由傳參第三步:完成
import React, { Component } from 'react' import RouterNav from '../../router3/RouterNav' export default class Login extends Component { render() { return ( <div> <RouterNav /> {/* 路由傳參第三步:獲取組件傳遞的參數 */} 登錄{this.props.params.name + '----' + this.props.params.age} </div> ) } }
路由嵌套第二步:完成
1 import React, { Component } from 'react' 2 import RouterNav from '../../router3/RouterNav' 3 import { Link } from 'react-router' 4 5 export default class Detail extends Component { 6 render() { 7 return ( 8 <div> 9 <ul> 10 <li> 11 <Link to='/detail/'>書籍</Link> 12 </li> 13 <li> 14 <Link to='/detail/book'>文章</Link> 15 </li> 16 </ul> 17 <RouterNav /> 18 19 {/* 路由嵌套第二步:使用this.props.children給detail的子路由留顯示位置 */} 20 {/* 注意:如果沒有第一步的包裹,是沒有this.props.children的,就會沒有顯示 */} 21 {this.props.children} 22 </div> 23 ) 24 } 25 }
四、頁面效果圖(先略)