react路由傳參的幾種方式

前言:為什么要用react侧蘸?-.-

react版本:16.12.0
react-dom版本:16.12.0
react-router-dom:5.1.2

為什么我要提我當(dāng)前的版本球拦?用過react的人應(yīng)該深有體會轨功,版本切記一定要匹配丰辣,我這里提到的方式并不一定適用其他版本乍恐,目前我下載的是最新的react及路由

Link標(biāo)簽傳參
  • {}是jsx的語法默蚌,我們要傳的是對象,因此這個(gè){}里面我們還需要寫一個(gè)對象形式的
  • vue里面指向地址的屬性叫path漱办,看到網(wǎng)上很多文章这刷,react路由傳參指向的屬性也叫path,但是:目前react-router-dom:5.1.2指向地址的屬性叫做pathname
第一種 pathname + search
  • 這種形式的傳參娩井,會把參數(shù)拼接在hash路由的最后面暇屋,例如:http://localhost:3000/#/setting?search
  • 優(yōu)點(diǎn):刷新也在........
  • 缺點(diǎn):只能傳字符串,顯式傳參洞辣,不能傳過大的數(shù)據(jù)咐刨,傳遞數(shù)據(jù)過多會讓地址變的很丑
A頁面
<Link to={{pathname: '/setting', search:'id=1'}}>jump --- search</Link>
// 取參
B頁面
this.props.history.location.search
第二種 pathname + 任意屬性
  • 這種形式的傳參式隱式的,刷新頁面就沒有了
  • 刷新之后會發(fā)現(xiàn)location下會多出一個(gè)state: undefined
A頁面
<Link to={{pathname: '/setting', abc:{id:1}}}>jump --- query</Link>
// 取參
B頁面
this.props.history.location.abc.id
第三種 pathname + state
  • 這種形式的傳參式隱式的扬霜,刷新頁面就沒有了
  • 和任意屬性一致定鸟,但是官方應(yīng)該指定的是這個(gè),因?yàn)樗⑿潞髄ocation中會存在state: undefined著瓶,任意屬性則不會
A頁面
<Link to={{pathname: '/setting', state:{id:1}}}>jump --- state</Link>
// 取參
B頁面
this.props.history.location.state.id
第四種(錯(cuò)誤示范) pathname + 拼接
  • 我想到這種方式联予,感覺會和search一樣,但是實(shí)際上材原,跳轉(zhuǎn)過去頁面并未匹配到沸久,刷新之后才會出現(xiàn),因此search的傳參只能按照上述的第一種pathname + search的方式余蟹,有找出問題所在的朋友請不吝賜教
A頁面
let params = 'a=1&b=2';
<Link to={{pathname: `/setting?${params }`}}>jump --- 拼接</Link>
// 取參
B頁面
this.props.history.location.search
第五種 pathname + params
  • 配合動態(tài)路由傳參
  • 優(yōu)缺點(diǎn)同第一種pathname + search的方式
// 動態(tài)路由后面加?表示可選卷胯,不加表示必選
<Route path="/setting/:id?" component={Setting}></Route>
A頁面
let id = 1;
<Link to={{pathname: `/setting/${id}`}}>jump --- params</Link>
// 取參
B頁面
this.props.history.match.params.id
js形式傳參及跳轉(zhuǎn)
第一種 使用原生的方式
window.location.hash = '/setting'
// 拼接search參數(shù)
window.location.hash = '/setting?a=1'
// 取值
this.props.history.location.search
第二種 pathname + search
  • 同Link的解釋
  • 這里的search也不能手動拼接,需要按照要求威酒,同Link跳轉(zhuǎn)錯(cuò)誤嘗試一致
this.props.history.push({
  pathname: '/setting',
  search: 'a=1'
})
// 取參
this.props.history.location.search
第三種 pathname + state
  • 同Link的解釋
this.props.history.push({
  pathname: '/setting',
  state: {
    id: 1
  }
})
// 取參
this.props.history.location.state.id
第四種 pathname + 任意屬性
  • 同Link的解釋
this.props.history.push({
  pathname: '/setting',
  abc: {
    id: 1
  }
})
// 取參
this.props.history.location.abc.id

當(dāng)一個(gè)路由點(diǎn)擊多次窑睁,將會出現(xiàn)警告话告,使用replace,這樣會替換歷史記錄中上一次相同路由記錄卵慰,而push會添加新的相同記錄進(jìn)去,hash路由會有這個(gè)問題佛呻,Browser形式的則不會

Link + replace
<Link to="/setting" replace/>
js
this.props.history.replace('/setting')
注意
  • 非<Route path="/setting" component={Setting}>這種形式裳朋,也就是說不是通過Route配置的組件,是訪問不到this.props.history這個(gè)屬性的
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吓著,一起剝皮案震驚了整個(gè)濱河市鲤嫡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌绑莺,老刑警劉巖暖眼,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異纺裁,居然都是意外死亡诫肠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門欺缘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來栋豫,“玉大人,你說我怎么就攤上這事谚殊∩パ欤” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵嫩絮,是天一觀的道長丛肢。 經(jīng)常有香客問我,道長剿干,這世上最難降的妖魔是什么蜂怎? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮置尔,結(jié)果婚禮上派敷,老公的妹妹穿的比我還像新娘。我一直安慰自己撰洗,他們只是感情好篮愉,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著差导,像睡著了一般试躏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上设褐,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天颠蕴,我揣著相機(jī)與錄音泣刹,去河邊找鬼。 笑死犀被,一個(gè)胖子當(dāng)著我的面吹牛椅您,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播寡键,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼掀泳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了西轩?” 一聲冷哼從身側(cè)響起员舵,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎藕畔,沒想到半個(gè)月后马僻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡注服,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年韭邓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片溶弟。...
    茶點(diǎn)故事閱讀 38,599評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡仍秤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出可很,到底是詐尸還是另有隱情诗力,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布我抠,位于F島的核電站苇本,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏菜拓。R本人自食惡果不足惜瓣窄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望纳鼎。 院中可真熱鬧俺夕,春花似錦、人聲如沸贱鄙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逗宁。三九已至映九,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瞎颗,已是汗流浹背件甥。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工捌议, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人引有。 一個(gè)月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓瓣颅,卻偏偏與公主長得像,于是被迫代替她去往敵國和親譬正。 傳聞我的和親對象是個(gè)殘疾皇子宫补,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評論 2 348