React-router路由3.x版本用法


一、安裝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 }

 

四、頁面效果圖(先略)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM