【前-react】react-router知識點概述+小demo

概述

看完本文后你能了解到:
(1)Router和route的關(guān)系
(2)如何通過js和標簽控制路由跳轉(zhuǎn)和傳遞參數(shù)
(3)history對象push和replace的區(qū)別及其他函數(shù)的用法
(4)location對象里的變量及其獲取方法

本文參考鏈接初探 React Router 4.0,想進一步了解的小伙伴可以移步這里。

React Router 中文文檔

沒事多逛逛文檔也是極好的

Router和Route

react-router主要是用于Url跳轉(zhuǎn),其核心概念即為Router和Route傻唾。

Router相當于一個容器谁撼,用于包裹Route柿究,一個Route即為一個Url摊鸡。Route里面會包裹一個組件。當在瀏覽器里輸入Url時姻政,就會跳轉(zhuǎn)到相應(yīng)的Route并顯示相關(guān)組件。

一個Router里面可以包含多個Route的偽代碼為:

<Router>
  <div>
      <Route />
      <Route />
      <Route />
  </div
<Router>

這里需要包裹一個div岂嗓,因為Router要求子組件只能有一個汁展。

Router和History有三個種類型:
(1)HashHistory和HashRouter
(2)BrowerHistory和BrowerRouter
(3)createMemoryHistory和MemoryRouter

BrowerHistory和HashHistory主要區(qū)別在于Url格式:

使用hashHistory,瀏覽器的url是這樣的:/#/user/liuna?_k=adseis
使用browserHistory,瀏覽器的url是這樣的:/user/liuna

這樣看起來當然是browerHistory更好一些,但是它需要server端支持厌殉。

使用hashHistory時食绿,因為有 # 的存在,瀏覽器不會發(fā)送request公罕,react-router 自己根據(jù) url 去 render 相應(yīng)的模塊器紧。

【相關(guān)連接】
react router為什么推薦使用browserHistory而不推薦hashHistory?

hashHistory 和 browserHistory 的區(qū)別


標簽控制和Js控制

我們在進行路由跳轉(zhuǎn)時楼眷,有兩種方法铲汪,第一種是通過標簽來完成跳轉(zhuǎn)動作,例如


   {/*只渲染出第一個與當前訪問地址匹配的 <Route> 或 <Redirect>摩桶。 */}
 <Switch>
    {/* 用了Switch 這里每次只匹配一個路由桥状,所有只有一個節(jié)點。 */}
    <Route/>
    <Route/>
  </Switch>

    {/*Link  最簡單的跳轉(zhuǎn)硝清,直接跳轉(zhuǎn)到相應(yīng)路徑下并顯示組件 */}
  <Link to={to} {...rest} />

    {/*渲染時將導航到一個新地址辅斟,這個新地址覆蓋在訪問歷史信息里面的本該訪問的那個地址 */}
  <Redirect to={to} {...rest} />

還有一種方式就是通過對象來控制路由跳轉(zhuǎn),即Js代碼控制芦拿,例如


使用history對象即可完成路由跳轉(zhuǎn)


History對象使用

在不同的 javascript 環(huán)境中士飒, history 以多種能夠行駛實現(xiàn)了對會話(session)歷史的管理。

history 對象通常具有以下屬性和方法:

Location對象

location對象包含了當前位置的相關(guān)信息蔗崎,而且location是不會發(fā)生改變的酵幕,因此可以在生命周期的回調(diào)函數(shù)中使用location對象來查看當前頁面的訪問地址是否發(fā)生改變。

實例

至此為止缓苛,我們對react-router的概念進行了簡單梳理芳撒,更多詳細的內(nèi)容可以移步本文參考文章,里面有更多詳細的介紹。本文的側(cè)重點是還是想通過demo來演示react-router的運行

本demo包含了如下的幾個功能點

【1】part1調(diào)轉(zhuǎn)傳遞參數(shù)

【2】part2 historty push和replace

【3】part3 url傳值

本demo是基于react-router 4.0的笔刹,用于基本的react-router學習芥备,
同時,可以參考React Router頁面?zhèn)髦档娜N方法舌菜,不過此版本貌似不是基于react-router4.0的萌壳,存在一些問題,在調(diào)試的時候可以把程序的this.props打印出來日月,在控制臺里查看袱瓮。

demo地址

https://github.com/huyifan/react-router-demo

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市爱咬,隨后出現(xiàn)的幾起案子尺借,更是在濱河造成了極大的恐慌,老刑警劉巖台颠,帶你破解...
    沈念sama閱讀 212,599評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件褐望,死亡現(xiàn)場離奇詭異,居然都是意外死亡串前,警方通過查閱死者的電腦和手機瘫里,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來荡碾,“玉大人谨读,你說我怎么就攤上這事√秤酰” “怎么了劳殖?”我有些...
    開封第一講書人閱讀 158,084評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長拨脉。 經(jīng)常有香客問我哆姻,道長,這世上最難降的妖魔是什么玫膀? 我笑而不...
    開封第一講書人閱讀 56,708評論 1 284
  • 正文 為了忘掉前任矛缨,我火速辦了婚禮,結(jié)果婚禮上帖旨,老公的妹妹穿的比我還像新娘箕昭。我一直安慰自己,他們只是感情好解阅,可當我...
    茶點故事閱讀 65,813評論 6 386
  • 文/花漫 我一把揭開白布落竹。 她就那樣靜靜地躺著,像睡著了一般货抄。 火紅的嫁衣襯著肌膚如雪述召。 梳的紋絲不亂的頭發(fā)上朱转,一...
    開封第一講書人閱讀 50,021評論 1 291
  • 那天,我揣著相機與錄音桨武,去河邊找鬼肋拔。 笑死,一個胖子當著我的面吹牛呀酸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播琼梆,決...
    沈念sama閱讀 39,120評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼性誉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了茎杂?” 一聲冷哼從身側(cè)響起错览,我...
    開封第一講書人閱讀 37,866評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎煌往,沒想到半個月后倾哺,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,308評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡刽脖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,633評論 2 327
  • 正文 我和宋清朗相戀三年羞海,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片曲管。...
    茶點故事閱讀 38,768評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡却邓,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出院水,到底是詐尸還是另有隱情腊徙,我是刑警寧澤,帶...
    沈念sama閱讀 34,461評論 4 333
  • 正文 年R本政府宣布檬某,位于F島的核電站撬腾,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏恢恼。R本人自食惡果不足惜民傻,卻給世界環(huán)境...
    茶點故事閱讀 40,094評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望厅瞎。 院中可真熱鬧饰潜,春花似錦、人聲如沸和簸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽锁保。三九已至薯酝,卻和暖如春半沽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背吴菠。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評論 1 267
  • 我被黑心中介騙來泰國打工者填, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人做葵。 一個月前我還...
    沈念sama閱讀 46,571評論 2 362
  • 正文 我出身青樓占哟,卻偏偏與公主長得像,于是被迫代替她去往敵國和親酿矢。 傳聞我的和親對象是個殘疾皇子榨乎,可洞房花燭夜當晚...
    茶點故事閱讀 43,666評論 2 350