官术网_书友最值得收藏!

2.3.4 history.createHref

createHref方法可將location對象轉換為對應的URL字符串,在React Router源碼中使用到了該方法,如在7.1.2節中,Link組件內部使用createHref方法創建a標簽的href屬性值。由于該方法為history對象的一個屬性,所以開發者也可通過history.createHref使用該方法。

在使用hashHistory.createHref方法時,注意createHref不會對原字符串做任何編解碼處理:

并且hashHistory的createHref會判斷HTML文檔流中是否有href屬性的base元素,其源碼實現如下:

在文檔流中沒有base元素的情況下,調用history.createHref創建路徑,得到的字符串將以“#”開頭:

如果文檔流中有base元素且href有值(任何值均可),假設當前路徑為/foo/baz,則調用history.createHref會得到:

此種情況將會得到包括瀏覽器pathname的完全的href路徑。

由于在有base元素的情況下需要使用完全的路徑設置到a標簽的href屬性上,才能使得瀏覽器識別出該a標簽是否被訪問過,因此,createHref源碼才需要判斷文檔流中的base元素并拼接出全路徑,以便正確設置a標簽的屬性值。

主站蜘蛛池模板: 新河县| 仁怀市| 新昌县| 卓尼县| 从江县| 永城市| 微山县| 开化县| 区。| 远安县| 奈曼旗| 昂仁县| 凤阳县| 龙海市| 会宁县| 东至县| 黄平县| 凉城县| 漳浦县| 江门市| 泗阳县| 黎平县| 迭部县| 陈巴尔虎旗| 广昌县| 神农架林区| 麻阳| 民县| 平安县| 噶尔县| 神木县| 宁蒗| 敖汉旗| 阿图什市| 宜兴市| 松溪县| 扎鲁特旗| 邵武市| 苏尼特右旗| 牟定县| 乌兰县|