react router為什麼推薦使用browserHistory而不推薦hashHistory?

weixin_30639719發表於2020-04-05

首先 browserHistory 其實使用的是 HTML5 的 History API,瀏覽器提供相應的介面來修改瀏覽器的歷史記錄;而 hashHistory 是通過改變地址後面的 hash 來改變瀏覽器的歷史記錄;

History API 提供了 pushState() 和 replaceState() 方法來增加或替換歷史記錄。而 hash 沒有相應的方法,所以並沒有替換歷史記錄的功能。但 react-router 通過 polyfill 實現了此功能,具體實現沒有看,好像是使用 sessionStorage。

另一個原因是 hash 部分並不會被瀏覽器傳送到服務端,也就是說不管是請求 http://domain.com/index.html#foo 還是 http://domain.com/index.html#bar ,服務只知道請求了 index.html 並不知道 hash 部分的細節。而 History API 需要服務端支援,這樣服務端能獲取請求細節。

還有一個原因是因為有些應該會忽略 URL 中的 hash 部分,記得之前將 URL 使用微信分享時會丟失 hash 部分。

 

原文連結:https://segmentfault.com/q/1010000007788281?_ea=1454870

友情連結:react 路由

轉載於:https://www.cnblogs.com/paul-du/p/7472474.html

相關文章