react-rouer路由

1筐赔、安裝路由

npm install react-router-dom -S

2溜哮、路由的方式,都是組件

HashRouter: 帶hash值的router        //相當(dāng)于vue hash
HashRouter 可以用別名
需要這樣寫: HashRouter as Router
BrowserRouter: 不帶hash值的router    //相當(dāng)于vue history
Route 組件渲染的一種方式
Switch 
Redirect  路由重定向
注意:
  • 1冒签、路由的配置項必須在HashRouter在抛、BrowserRouter內(nèi)部做配置
  • 2、HashRouter萧恕、BrowserRouter內(nèi)部只能擁有一個子元素

3刚梭、路由配置項常用的組件

import React, { Component } from "react"
import { HashRouter as Router, BrowserRouter, Link, NavLink, Route} from "react-router-dom"
import Home from "./components/home"
import Movie from "./components/movie"
import Sort from "./components/sort"
import Mine from "./components/mine"
import HomeMovie from "./components/homeMovie"
export default class App extends Component{
    render () {
        return (
            <Router>
                <div>
                    //componet 渲染方式
                    <Route path="/home" component={Home}/>
                    <Route path="/movie" component={Movie}/>
                    <Route path="/home/movie" component={HomeMovie}/>
                    <Route path="/sort" component={Sort}/>
                    <Route path="/mine" component={Mine} />
                    //render 渲染方式 
                    <Route path="/home" exact renader={() => {
                        return <Home/>
                    }} />
                    <Route path="/movie" renader={() => {
                        return <HomeMovie />
                    }} />
                    <Route path="/home/movie" renader= {() => {
                        return <Movie />
                    }} />
                    <Route path="/sort" renader={() => {
                        return <Sort />
                    }} />
                    <Route path="/mine" renader={() => {
                        return <Mine />
                    }} />
                    <div>
                        <ul>
                            <li><NavLink to="/home">
                                <span>首頁</span>
                            </NavLink></li>
                            <li><NavLink to="/movie">
                                <span>電影</span>
                            </NavLink></li>
                            <li><NavLink to="/sort">
                                <span>分類</span>
                            </NavLink></li>
                            <li><NavLink to="/mine">
                                <span>我的</span>
                            </NavLink></li>
                        </ul>
                    </div>
                </div>
            </Router>
        )
    }
}

4肠阱、Route

作用:當(dāng)路徑匹配成功以后,渲染相對應(yīng)的組件
屬性:

  • path: 組件所對應(yīng)的路徑
  • component:需要渲染的組件 (組件渲染的方式)
  • render:需要渲染的組件 (組件渲染的方式)
  • exact:路徑完全匹配 一般為false 父級在子頁面不顯示

5朴读、路由跳轉(zhuǎn)的方式
1屹徘、Link 路由跳轉(zhuǎn)的方式
2、NavLink 路由跳轉(zhuǎn)的方式(帶當(dāng)前位置名)
屬性:

用的很少
activeStyle  
//寫行內(nèi)樣式 <NavLink  to="/home" activeStyle={{color:"red"}}/>
activeClassName  
//寫class樣式 <NavLink  to="/home" activeClassName="NavLink-active"/>

6衅金、路由嵌套

7噪伊、路由渲染的方式

render:組件標簽形式
1、不僅可以渲染組件 而且還可以渲染標簽
2氮唯、 可以進行組件傳值 以及邏輯判斷
3鉴吹、render渲染的組件默認是沒有history location match 這三個屬性的 如果需要使用 必須經(jīng)過傳遞給組件
component:組價名稱
1、只能渲染組件
2惩琉、凡是通過component進行組件渲染的 當(dāng)前組件的props 中就有多三個屬性(history location match)

8豆励、路由傳參

1、動態(tài)路由

在定義路由的時候瞒渠,定義傳遞參數(shù)的key值 <Route path="/detail/:id/:name" component={Detail} />
在路由跳轉(zhuǎn)的時候 傳遞需要傳遞的值 <h2 key={index}><Link to={item.path+"/"+item.goodsId+"/"+item.goodsName}>{item.goodsName}</Link></h2>

接收的時候通過this.props.match.params進行接收

2良蒸、query傳值

1、根據(jù)query傳值的方式進行路徑的拼接 需要node中url模塊的解析
2伍玖、根據(jù)對象的形式進行傳值 to={{pathname:"路徑"嫩痰,query:{需要傳遞的值}}}

9、編程式導(dǎo)航

    this.props.history.goBack()
    this.props.history.goForward()
    this.props.history.push()
    this.props.history.replace()

10私沮、withRouter

1始赎、當(dāng)前組件如果內(nèi)部的this.props中沒有history location match的時候可以通過withRouter進行包裹組件
然后進行導(dǎo)出組件 這樣當(dāng)前組件就會有路由的這幾個屬性

import {withRouter} from "react-router-dom"
........
export default withRoute(組件名稱)

11、Switch

被Switch包裹的路由組件 在匹配的時候只會匹配一個

12仔燕、Redirect

重定向
from:從哪里來
to:到哪里去

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市魔招,隨后出現(xiàn)的幾起案子晰搀,更是在濱河造成了極大的恐慌,老刑警劉巖办斑,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件外恕,死亡現(xiàn)場離奇詭異,居然都是意外死亡乡翅,警方通過查閱死者的電腦和手機鳞疲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蠕蚜,“玉大人尚洽,你說我怎么就攤上這事“欣郏” “怎么了腺毫?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵癣疟,是天一觀的道長。 經(jīng)常有香客問我潮酒,道長睛挚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任急黎,我火速辦了婚禮扎狱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘勃教。我一直安慰自己委乌,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布荣回。 她就那樣靜靜地躺著遭贸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪心软。 梳的紋絲不亂的頭發(fā)上壕吹,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天,我揣著相機與錄音删铃,去河邊找鬼耳贬。 笑死,一個胖子當(dāng)著我的面吹牛猎唁,可吹牛的內(nèi)容都是我干的咒劲。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼诫隅,長吁一口氣:“原來是場噩夢啊……” “哼腐魂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起逐纬,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤蛔屹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后豁生,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體兔毒,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年甸箱,在試婚紗的時候發(fā)現(xiàn)自己被綠了育叁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡芍殖,死狀恐怖豪嗽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤昵骤,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布树碱,位于F島的核電站,受9級特大地震影響变秦,放射性物質(zhì)發(fā)生泄漏成榜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一蹦玫、第九天 我趴在偏房一處隱蔽的房頂上張望赎婚。 院中可真熱鬧,春花似錦樱溉、人聲如沸挣输。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽撩嚼。三九已至,卻和暖如春挖帘,著一層夾襖步出監(jiān)牢的瞬間完丽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工拇舀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留逻族,地道東北人。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓骄崩,卻偏偏與公主長得像聘鳞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子要拂,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內(nèi)容