路由

React路由需要借助react-router-dom

基礎(chǔ)用法

1恩够、引入:import {BrowserRouter,NavLink,Route,Switch,Redirect} from 'react-router-dom'
2、去index.js把App包裹起來
<BrowserRouter>
<App />
</BrowserRouter>
3、注冊(cè)路由:
<MYNavLink to="/about">About</MYNavLink>
<MYNavLink to="/home">Home</MYNavLink>
(這里的MYNavLink是對(duì)NavLink的封裝,包裹了一些類名)
4、匹配路由
<Switch>
{/* 注冊(cè)路由 默認(rèn)的是模糊匹配 扒吁,要開啟精準(zhǔn)(exact)匹配,需要加上exact /}
<Route path='/about' component={About}/>
<Route path='/home' component={Home}/>
<Redirect to='/home'/>
{/
如果前面的都沒有匹配上室囊,就重定向到redirect指定的路徑 */}
</Switch>

嵌套路由

需要把多級(jí)的路由都寫出來雕崩,而且上級(jí)路由要用模糊匹配,如
<Route path='/about/msg1' component={msg1}/>

向路由組件傳參
params傳參

<Link to={`/home/msg/${obj.id}/${obj.title}`}>{obj.title}</Link>

<Route path="/home/msg/:id/:title" component={detail}>

然后再detail組件的this.props.match.params里就可以取到包含了id和title屬性的數(shù)據(jù)對(duì)象

傳遞search參數(shù)

<Link to={`/home/msg/?id=${obj.id}&title=${obj.title}`}>{obj.title}</Link>
<Route path="/home/msg" component={detail}> 無需顯示的聲明接受波俄,正常注冊(cè)即可
在detail組件的this.props.location.search里面晨逝,但是,沒有自動(dòng)整理成對(duì)象的形式
不過react腳手架為我們提供了一個(gè)庫可以幫忙做這件事

import qs from "querystring"
var obj = {a:1, b: 2}
qs.stringify(obj) // a=1&b=2
let str = 'name=zhangsan&age=18'
qs.parse(str) // {name:'zhangsan', age: 18}
state 參數(shù)(不會(huì)把傳遞的東西在地址欄里展示出來)
<Link to={{pathname:"/home/msg", state:{id: obj.id, title:obj.title}}}>{obj.title}</Link>
<Route path="/home/msg" component={detail}> 無需顯示的聲明接受懦铺,正常注冊(cè)即可
使用:
this.props.location.state 已經(jīng)整理好成一個(gè)對(duì)象了

關(guān)于瀏覽痕跡

在react中捉貌,組件的導(dǎo)航用的是push模式,是會(huì)留下痕跡的,可以回退趁窃。如果我們想用replace模式讓它不留痕跡呢怎么辦呢牧挣?給路由鏈接加上屬性replace={true}

編程式路由導(dǎo)航

去主動(dòng)的調(diào)用this.props.history.push(或是replace)來實(shí)現(xiàn)路由跳轉(zhuǎn)

去主動(dòng)的調(diào)用this.props.history.goBack或者是goForward來實(shí)現(xiàn)后退或前進(jìn)
this.props.history.go() 接受一個(gè)數(shù)值作為參數(shù)表示要前進(jìn)幾步,傳入負(fù)數(shù)表示后退多少步

withRouter

在react中醒陆,只有路由組件的props里才有history瀑构,可是如果我們的需求是想在一般組件里定義一些button來實(shí)現(xiàn)back和forward呢 ?

暴露一般組件時(shí)刨摩,
export default withRouter(componentName)
withRouter是react-router-dom里面的一個(gè)函數(shù)寺晌,它接受一個(gè)一般組件,然后給它加上路由組件所擁有的特殊的東西

HashRouter和BrowersRouter的對(duì)比

1澡刹、兼容性呻征,HashRouter更好,應(yīng)該BrowersRouter是對(duì)H5的History的再封裝
2罢浇、path上HashRouter多一個(gè)#
3陆赋、HashRouter刷新后路由參數(shù)的state會(huì)丟失,BrowserRouter卻不會(huì)嚷闭,因?yàn)樗约安僮髟诹藀rops.location的state里
4攒岛、HashRouter有時(shí)候可以解決一些路徑錯(cuò)誤的問題

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市胞锰,隨后出現(xiàn)的幾起案子灾锯,更是在濱河造成了極大的恐慌,老刑警劉巖胜蛉,帶你破解...
    沈念sama閱讀 222,946評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挠进,死亡現(xiàn)場離奇詭異,居然都是意外死亡誊册,警方通過查閱死者的電腦和手機(jī)领突,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來案怯,“玉大人君旦,你說我怎么就攤上這事〕凹睿” “怎么了金砍?”我有些...
    開封第一講書人閱讀 169,716評(píng)論 0 364
  • 文/不壞的土叔 我叫張陵,是天一觀的道長麦锯。 經(jīng)常有香客問我恕稠,道長,這世上最難降的妖魔是什么扶欣? 我笑而不...
    開封第一講書人閱讀 60,222評(píng)論 1 300
  • 正文 為了忘掉前任鹅巍,我火速辦了婚禮千扶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘骆捧。我一直安慰自己澎羞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,223評(píng)論 6 398
  • 文/花漫 我一把揭開白布敛苇。 她就那樣靜靜地躺著妆绞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪枫攀。 梳的紋絲不亂的頭發(fā)上括饶,一...
    開封第一講書人閱讀 52,807評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音脓豪,去河邊找鬼巷帝。 笑死,一個(gè)胖子當(dāng)著我的面吹牛扫夜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播驰徊,決...
    沈念sama閱讀 41,235評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼笤闯,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了棍厂?” 一聲冷哼從身側(cè)響起颗味,我...
    開封第一講書人閱讀 40,189評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎牺弹,沒想到半個(gè)月后浦马,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,712評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡张漂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,775評(píng)論 3 343
  • 正文 我和宋清朗相戀三年晶默,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片航攒。...
    茶點(diǎn)故事閱讀 40,926評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡磺陡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出漠畜,到底是詐尸還是另有隱情币他,我是刑警寧澤,帶...
    沈念sama閱讀 36,580評(píng)論 5 351
  • 正文 年R本政府宣布憔狞,位于F島的核電站蝴悉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏瘾敢。R本人自食惡果不足惜拍冠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,259評(píng)論 3 336
  • 文/蒙蒙 一硝枉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧倦微,春花似錦妻味、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,750評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拓劝,卻和暖如春雏逾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背郑临。 一陣腳步聲響...
    開封第一講書人閱讀 33,867評(píng)論 1 274
  • 我被黑心中介騙來泰國打工栖博, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人厢洞。 一個(gè)月前我還...
    沈念sama閱讀 49,368評(píng)論 3 379
  • 正文 我出身青樓仇让,卻偏偏與公主長得像,于是被迫代替她去往敵國和親躺翻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子丧叽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,930評(píng)論 2 361

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