react-router hash history and browser history

最近一個(gè)SPA的玩具項(xiàng)目中在用react-router捞高,有個(gè)問(wèn)題一直在困擾我谣辞。我按照官方的文檔宋距,使用browserHistory,然后生成的客戶端路由都是不帶#的埃元。這樣在一個(gè)子級(jí)路由中刷新頁(yè)面涝涤,就是請(qǐng)求這個(gè)子級(jí)路由,我后端就得能識(shí)別這個(gè)子級(jí)路由岛杀。阔拳。這就有些蛋疼,和我以前用過(guò)的#/XXX這樣的客戶端路由有些不同类嗤。
不應(yīng)該啊衫生,作者不可能沒(méi)考慮到這個(gè)問(wèn)題啊,肯定是我哪里用的不對(duì)土浸。于是乎,我又去看了下文檔彭羹。
找到這篇文檔 Histories黄伊,終于算是解決了我的疑惑。

react-router提供了三種方式來(lái)實(shí)現(xiàn)路由派殷,并沒(méi)有默認(rèn)的路由还最,需要在聲明路由的時(shí)候墓阀,顯式指定所使用的路由。

//v1.x
<Router/>
//v2.0.0
// hash history
import { hashHistory } from 'react-router'
<Router history={hashHistory} />
  • browserHistory
  • hashHistory
  • createMemoryHistory

官方推薦的是browserHistory拓轻,它是使用瀏覽器內(nèi)置的 History API 實(shí)現(xiàn)的斯撮。同時(shí),后端也需要特殊配置扶叉,來(lái)處理這些可能發(fā)送到后端的路由勿锅,不光是因?yàn)橛脩艨赡苁謩?dòng)刷新頁(yè)面,還有另外一個(gè)更重要的原因枣氧。在不支持 History 特性的舊式瀏覽器中溢十,react-router就會(huì)直接重新加載頁(yè)面(顯然后端必須識(shí)別這些路由)。

文檔中有一句也提到了為什么推薦使用browser history达吞,而不是hash history张弛。要知道,react router以前是默認(rèn)使用hash history的酪劫。

You might wonder why we don't fall back to hash history; the problem is that URLs become non-deterministic. If a visitor on hash history shares a URL with a visitor on browser history, and then they share that back, we end up with a terrible cartesian product of infinite potential URLs.

意思就是怕 hash history 和 browser history 的混用在分享url時(shí)引起混亂吞鸭。
我有點(diǎn)不太明白,一個(gè)app應(yīng)該只會(huì)采用一種方式覆糟,不會(huì)混用啊刻剥。

先留個(gè)坑,待我再查查搪桂。
在stackoverflow上提了個(gè)問(wèn)題透敌,總算解決了疑惑。
文檔中的意思是在運(yùn)行時(shí)切換 browser history 和 hash history踢械,而不是我之前理解的只有一種方式實(shí)現(xiàn)酗电。那在分享url的時(shí)候,自然是會(huì)引起混亂的内列。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末撵术,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子话瞧,更是在濱河造成了極大的恐慌嫩与,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件交排,死亡現(xiàn)場(chǎng)離奇詭異划滋,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)埃篓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門处坪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事同窘。” “怎么了想邦?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵裤纹,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我丧没,道長(zhǎng)鹰椒,這世上最難降的妖魔是什么骂铁? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任茫蛹,我火速辦了婚禮烁挟,結(jié)果婚禮上婴洼,老公的妹妹穿的比我還像新娘。我一直安慰自己柬采,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布醇王。 她就那樣靜靜地躺著呢燥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上怖糊,一...
    開(kāi)封第一講書(shū)人閱讀 49,772評(píng)論 1 290
  • 那天颇象,我揣著相機(jī)與錄音伍伤,去河邊找鬼。 笑死遣钳,一個(gè)胖子當(dāng)著我的面吹牛扰魂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蕴茴,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼劝评,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了倦淀?” 一聲冷哼從身側(cè)響起蒋畜,我...
    開(kāi)封第一講書(shū)人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎撞叽,沒(méi)想到半個(gè)月后姻成,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡愿棋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年科展,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片初斑。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡辛润,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出见秤,到底是詐尸還是另有隱情砂竖,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布鹃答,位于F島的核電站乎澄,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏测摔。R本人自食惡果不足惜置济,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一解恰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧浙于,春花似錦护盈、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至檀轨,卻和暖如春胸竞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背参萄。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工卫枝, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人讹挎。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓校赤,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親淤袜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子痒谴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

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