- 深入理解React Router:從原理到實踐
- 李楊韜
- 344字
- 2021-04-16 16:10:43
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標簽的屬性值。
推薦閱讀
- Java多線程編程實戰指南:設計模式篇(第2版)
- Spring Boot開發與測試實戰
- SpringMVC+MyBatis快速開發與項目實戰
- Python 深度學習
- Go語言高效編程:原理、可觀測性與優化
- UML+OOPC嵌入式C語言開發精講
- Xamarin.Forms Projects
- 軟件工程
- Windows Forensics Cookbook
- LabVIEW虛擬儀器入門與測控應用100例
- Kubernetes源碼剖析
- ExtJS Web應用程序開發指南第2版
- Mastering Concurrency Programming with Java 9(Second Edition)
- C++ System Programming Cookbook
- Visual FoxPro程序設計實驗教程