在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ vue-router 嵌套路由書寫順序問題

vue-router 嵌套路由書寫順序問題

問題如圖:
如果我的 /user/:username 寫到這個位置,那么我的 /user/task 路由就失效,未報(bào)錯。
但前端點(diǎn)擊相關(guān)鏈接,瀏覽器地址欄變化為 http://localhost:8080/user/task,但內(nèi)容是 /user/info的內(nèi)容。
clipboard.png

若將 /user/:username 寫到所有子路的下面,也就是如圖。一切正常。
迷惑不解,文檔在嵌套路由中沒有相關(guān)的問題說明。
請有經(jīng)驗(yàn)的朋友指點(diǎn)一二。

clipboard.png

回答
編輯回答
憶當(dāng)年

命名沖突:username匹配的是/user/這個目錄下的所有路徑
/user/1,/user/list等都會匹配到
vue-router中有一句話: 同一個路徑可以匹配多個路由,此時,匹配的優(yōu)先級就按照路由的定義順序:誰先定義的,誰的優(yōu)先級就最高。
所以你的:username寫到第二位下面的都匹配不到
你可以試試放到最后

2018年5月3日 10:49
編輯回答
神經(jīng)質(zhì)

提醒一下,當(dāng)使用路由參數(shù)時,例如從 /user/foo 導(dǎo)航到 /user/bar,原來的組件實(shí)例會被復(fù)用。因?yàn)閮蓚€路由都渲染同個組件,比起銷毀再創(chuàng)建,復(fù)用則顯得更加高效。不過,這也意味著組件的生命周期鉤子不會再被調(diào)用。

復(fù)用組件時,想對路由參數(shù)的變化作出響應(yīng)的話,你可以簡單地 watch (監(jiān)測變化) $route 對象:

const User = {
template: '...',
watch: {

'$route' (to, from) {
  // 對路由變化作出響應(yīng)...
}

}
}
或者使用 2.2 中引入的 beforeRouteUpdate 守衛(wèi):

const User = {
template: '...',
beforeRouteUpdate (to, from, next) {

// react to route changes...
// don't forget to call next()

}
}

2017年1月2日 12:35
編輯回答
有點(diǎn)壞

這和子路由沒有直接關(guān)系的,而是路由是從上到下匹配的,你的/user/:username這個路由是能匹配到/user/task和/user/info的。會把task和info識別為username,所以要不/user/:username寫在最后面

2018年9月3日 11:41