React-Router v4(基礎(chǔ))

一、 react-router vs react-router-dom

Note:?This package provides the core routing functionality for React Router, but you might not want to install it directly. If you are writing an application that will run in the browser, you should instead install?react-router-dom. Similarly, if you are writing a React Native application, you should instead install?react-router-native. Both of those will install?react-router?as a dependency.

官方文檔:https://reacttraining.com/react-router/web/guides/philosophy




二翅楼、快速上手

1.命令行依次輸入

項(xiàng)目構(gòu)建

npm install -g create-react-app

create-react-app demo-app

cd demo-app

安裝react-router-dom

npm install react-router-dom


2.入口文件路由配置(index.js)

import React from 'react';

import ReactDOM from "react-dom";

import { HashRouter as Router, Route, Link, Switch} from 'react-router-dom'

//這里使用引入的App組件

import App from './App';

ReactDOM.render(

????????( <HashRouter>

????????????????<Route path='/' component={App}/>

????????????????</HashRouter>

????????), document.getElementById('root')

);

3.App組件中定義路由

import React from'react';

import ReactDOM from"react-dom";

import { HashRouter as Router, Route,Link,Switch} from 'react-router-dom'

class App extends Component{

????????render() {

????????????????return(

? ? ? ? ????????????????<header>這是頭部公共部分</header>

? ? ? ? ????????????????<div>

????????????????????????????????{/*路由配置*/}

? ? ? ????????????????? </div>

? ? ? ? ? ? ? ?);

????????}

}

export default App;

4.總結(jié)

① 核心思想:router 是一個(gè)組件容器摔竿,可以裝一部分公共部分,可以在剩下需要切換的部分直接進(jìn)行路由配置灾挨。

② Switch:當(dāng)某一路由同時(shí)符合多個(gè)路由規(guī)則會(huì)帶來麻煩邑退,當(dāng)我們需要一個(gè)路由只為一匹配一個(gè)路由規(guī)則時(shí),需要switch劳澄,switch匹配到一個(gè)后不再繼續(xù)匹配后面的瓜饥,精準(zhǔn)匹配需要給route添加exact屬性。


三浴骂、路由傳值

1.params傳值

路由配置

<Route path='/detail/:id' component={Detail}/>

跳轉(zhuǎn)頁面

<Link to={'/detail/2'} >XXXX</Link>

//或者

this.props.history.push("/detail/2")

獲取頁面

this.props.match.params.id

//注意:有可能一個(gè)組件的子組件無法通過上面的代碼獲取到id可以使用withRouter(ChildName)來形成高階組件

import { withRouter} from 'react-router-dom';

export default withRouter(ChildName);

上面講的是傳一個(gè)值乓土,當(dāng)然也可以傳多個(gè)值

<Route exact path="/rgb/:r/:g/:b" component={RGB} />

this.props.match.params.r

this.props.match.params.g

this.props.match.params.b

2.query傳值

注意:路由配置不需要修改,傳遞一個(gè)對(duì)象,對(duì)象屬性包含pathname 和 query 趣苏,query屬性的值是要傳遞的對(duì)象狡相。

跳轉(zhuǎn)頁面

<Link to={{ pathname: '/detail',query:{type:'sex'}}}>XXXX</Link>

//或者

this.props.history.push({pathname:'/detail',query:{type:'sex'}})

獲取頁面參數(shù)

this.props.location.query.sex//建議不用 刷新頁面時(shí) 丟失

3.state傳值--秘密傳遞

注意:同query相似,state傳的參數(shù)不可見食磕,query傳的參數(shù)在地址欄可見尽棕;

跳轉(zhuǎn)頁面

<Link to={{ pathname: '/detail',state:{type:'sex'}}}>XXXX</Link>

//或者

this.props.history.push({pathname:'/detail',state:{type:'sex'}})

獲取頁面

this.props.location.state.sex//建議不用 刷新頁面時(shí) 丟失

四、路由跳轉(zhuǎn)


1.Link

<Link to="/detail/10003">詳情</Link>

2.Push

this.props.history.push("/")

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末彬伦,一起剝皮案震驚了整個(gè)濱河市滔悉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌单绑,老刑警劉巖回官,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異搂橙,居然都是意外死亡歉提,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門区转,熙熙樓的掌柜王于貴愁眉苦臉地迎上來苔巨,“玉大人,你說我怎么就攤上這事废离≈对螅” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵蜻韭,是天一觀的道長悼尾。 經(jīng)常有香客問我,道長湘捎,這世上最難降的妖魔是什么诀豁? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮窥妇,結(jié)果婚禮上舷胜,老公的妹妹穿的比我還像新娘。我一直安慰自己活翩,他們只是感情好烹骨,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著材泄,像睡著了一般沮焕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拉宗,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天峦树,我揣著相機(jī)與錄音辣辫,去河邊找鬼。 笑死魁巩,一個(gè)胖子當(dāng)著我的面吹牛急灭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谷遂,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼葬馋,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了肾扰?” 一聲冷哼從身側(cè)響起畴嘶,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎集晚,沒想到半個(gè)月后窗悯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡甩恼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年蟀瞧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了沉颂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片条摸。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖铸屉,靈堂內(nèi)的尸體忽然破棺而出钉蒲,到底是詐尸還是另有隱情,我是刑警寧澤彻坛,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布顷啼,位于F島的核電站,受9級(jí)特大地震影響昌屉,放射性物質(zhì)發(fā)生泄漏钙蒙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一间驮、第九天 我趴在偏房一處隱蔽的房頂上張望躬厌。 院中可真熱鬧,春花似錦竞帽、人聲如沸扛施。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽疙渣。三九已至,卻和暖如春堆巧,著一層夾襖步出監(jiān)牢的瞬間妄荔,已是汗流浹背泼菌。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留啦租,地道東北人灶轰。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像刷钢,于是被迫代替她去往敵國和親笋颤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

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

  • 很多類型的應(yīng)用程序都需要在特定事件發(fā)生時(shí)(例如注冊(cè))提醒用戶, 而常用的通信方法是電子郵件内地。 使用 Flask-M...
    焉知非魚閱讀 764評(píng)論 0 1
  • 霧都花兒閱讀 89評(píng)論 0 1
  • 最近稍微了解了一下鄰趣伴澄,其產(chǎn)品主要涉及眾包配送和代辦2塊,今天嘗試分析下眾包配送這塊產(chǎn)品的訂單派單邏輯阱缓。 從知乎上...
    顧小花閱讀 3,492評(píng)論 1 8