首先說(shuō)明,這是一篇簡(jiǎn)單的說(shuō)明性文章幔戏,沒有review
React-router是實(shí)現(xiàn)React單頁(yè)面開發(fā)(SinglePage Web Application)必不可少的工具而线。在扯React-router原理前,我們先來(lái)復(fù)習(xí)一下SPA(單頁(yè)面應(yīng)用)和MPA(多頁(yè)面應(yīng)用)的差別。
單頁(yè)面不是指路由是完全靜態(tài)的刹淌,而是比如像http://www.reibang.com/writer#/notebooks/52151599/notes/這個(gè)網(wǎng)頁(yè),他的http://www.reibang.com/這一部分是靜態(tài)的讥耗,路由的切換全在最后的“/”后面有勾。而多頁(yè)面是每次切換路由都要發(fā)一個(gè)新的https://www.xxx.com/這樣結(jié)構(gòu)的新網(wǎng)頁(yè)。
React-router的目的是實(shí)現(xiàn)URL與Ul的同步古程。其實(shí)現(xiàn)了路由的核心功能蔼卡,而常用的React-router-dom是基于react-router,加入了在瀏覽器運(yùn)行環(huán)境下的一些功能挣磨。react-router-native同理雇逞。
所以我們希望實(shí)現(xiàn):不同URL——>不同頁(yè)面——>不同組件。
如果使用原生的window.location.pathname茁裙,需要刷新頁(yè)面喝峦,這就違背了單頁(yè)面局部刷新的開發(fā)方法,所以采用js強(qiáng)大的history庫(kù):
使用window.history.pushState()既可以修改url呜达,也不用刷新頁(yè)面谣蠢,同時(shí)通過? ? updateLocation,執(zhí)行相應(yīng)回調(diào)查近,最后重新render實(shí)現(xiàn)ui(component)的同步更新眉踱。
*Vue-router的原理類似