? ? 總結(jié)起來(lái),React-router很簡(jiǎn)單,個(gè)人只有三點(diǎn):
? ? 第一點(diǎn):使用Link澈蟆,Redirect,browserHistory.push("url")卓研,this.context.router.push("url”)等方法去“主動(dòng)改變”瀏覽器的url
? ? 第二點(diǎn):Router組件的history屬性會(huì)隨時(shí)監(jiān)測(cè)瀏覽器url的改變趴俘,當(dāng)瀏覽器的url改變后,就會(huì)根據(jù)當(dāng)前的url奏赘,去激活對(duì)應(yīng)的路由去加載對(duì)應(yīng)的組件寥闪,那根據(jù)的是哪部分的url呢,這個(gè)也是history的屬性值決定的磨淌,hashHistory是根據(jù)hash地址的變化也就是#號(hào)后面的地址去和Route組件的真實(shí)path路徑對(duì)應(yīng)疲憋,對(duì)應(yīng)上了就會(huì)加載后面對(duì)應(yīng)的component,browserHistory則是根據(jù)第一個(gè)/后的路徑去匹配Route組件的真實(shí)path路徑梁只。(這里要注意缚柳,如果是嵌套路由埃脏,當(dāng)外層路由組件內(nèi)部沒(méi)有返回組件的children屬性時(shí),其內(nèi)定義的路由都是無(wú)效的秋忙,不會(huì)被history屬性查找)
? ? 第三點(diǎn):一些通配符彩掐,嵌套路由,都是為了更加靈活的去定義path灰追。其中通配符是只要符合通配規(guī)則堵幽,就會(huì)加載對(duì)應(yīng)的組件,嵌套路由可見(jiàn)下面寫(xiě)的嵌套路由的優(yōu)勢(shì)弹澎。
? ? 嵌套路由的優(yōu)勢(shì):
? ? ? ? ?1朴下,可以在外層路由中定義一個(gè)公共的組件,那么當(dāng)訪問(wèn)該路由下的所有子路由時(shí)裁奇,都會(huì)加載父路由對(duì)應(yīng)的組件桐猬。
? ? ? ? ?2,會(huì)產(chǎn)生相對(duì)路徑的概念刽肠,便于路徑的書(shū)寫(xiě),子路由中path對(duì)應(yīng)的路徑名前如果沒(méi)有/免胃,那么該路徑就是相對(duì)于父路由的路徑去匹配瀏覽器的url
? ? 嵌套路由注意事項(xiàng):
? ? ? ? ?在父路由對(duì)應(yīng)的組件中音五,一定返回該組件props中的children項(xiàng),不然該路由下定義的子路由就不會(huì)被使用羔沙。
? ? 注:children屬性躺涝,其實(shí)就是表示他的子組件
附:
阮大神寫(xiě)的react-router教程很贊(網(wǎng)址:http://www.ruanyifeng.com/blog/2016/05/react_router.html?utm_source=tool.lu),本文僅為個(gè)人觀后總結(jié)扼雏,希望對(duì)你有所幫助