vue-router

動態(tài)路由匹配

const router = new VueRouter({
  routes: [
    // 動態(tài)路徑參數(shù) 以冒號開頭
    { path: '/user/:id', component: User }
  ]
})

一個“路徑參數(shù)”使用冒號 : 標記。當匹配到一個路由時,參數(shù)值會被設置到 this.$route.params,可以在每個組件內使用善涨。

響應路由參數(shù)的變化

當使用路由參數(shù)時,例如從 /user/foo 導航到 /user/bar茶行,原來的組件實例會被復用躯概。因為兩個路由都渲染同個組件,比起銷毀再創(chuàng)建畔师,復用則顯得更加高效娶靡。不過,這也意味著組件的生命周期鉤子不會再被調用看锉。
復用組件時姿锭,想對路由參數(shù)的變化作出響應的話,你可以簡單地 watch (監(jiān)測變化) $route 對象:

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

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

beforeRouteUpdate (to, from, next) {
    // react to route changes...
    // don't forget to call next()
  }

捕獲所有路由或 404 Not found 路由

常規(guī)參數(shù)只會匹配被 / 分隔的 URL 片段中的字符伯铣。如果想匹配任意路徑呻此,我們可以使用通配符 (*)

{
  // 會匹配所有路徑
  path: '*'
}
{
  // 會匹配以 `/user-` 開頭的任意路徑
  path: '/user-*'
}

含有通配符的路由應該放在最后。路由 { path: '*' } 通常用于客戶端 404 錯誤腔寡。
當使用一個通配符時焚鲜,$route.params 內會自動添加一個名為 pathMatch 參數(shù)。它包含了 URL 通過通配符被匹配的部分:

// 給出一個路由 { path: '/user-*' }
this.$router.push('/user-admin')
this.$route.params.pathMatch // 'admin'
// 給出一個路由 { path: '*' }
this.$router.push('/non-existing')
this.$route.params.pathMatch // '/non-existing'

編程式的導航

router.push(location, onComplete?, onAbort?)

聲明式 <router-link :to="...">
編程式 router.push(...)

// 字符串
router.push('home')
// 對象
router.push({ path: 'home' })
// 命名的路由
router.push({ name: 'user', params: { userId: '123' }})
// 帶查詢參數(shù)放前,變成 /register?plan=private
router.push({ path: 'register', query: { plan: 'private' }})

注意:如果提供了 path忿磅,params 會被忽略,上述例子中的 query 并不屬于這種情況凭语。

const userId = '123'
router.push({ name: 'user', params: { userId }}) // -> /user/123
router.push({ path: `/user/${userId}` }) // -> /user/123
// 這里的 params 不生效
router.push({ path: '/user', params: { userId }}) // -> /user

注意: 如果目的地和當前路由相同葱她,只有參數(shù)發(fā)生了改變 (比如從一個用戶資料到另一個 /users/1 -> /users/2),你需要使用 beforeRouteUpdate 來響應這個變化 (比如抓取用戶信息)似扔。

router.replace(location, onComplete?, onAbort?)

跟 router.push 很像吨些,唯一的不同就是,它不會向 history 添加新記錄炒辉,而是跟它的方法名一樣 —— 替換掉當前的 history 記錄豪墅。

router.go(n)

這個方法的參數(shù)是一個整數(shù),意思是在 history 記錄中向前或者后退多少步辆脸,類似 window.history.go(n)但校。

命名路由

有時候,通過一個名稱來標識一個路由顯得更方便一些啡氢,特別是在鏈接一個路由状囱,或者是執(zhí)行一些跳轉的時候。你可以在創(chuàng)建 Router 實例的時候倘是,在 routes 配置中給某個路由設置名稱亭枷。


?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市搀崭,隨后出現(xiàn)的幾起案子叨粘,更是在濱河造成了極大的恐慌,老刑警劉巖瘤睹,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件升敲,死亡現(xiàn)場離奇詭異,居然都是意外死亡轰传,警方通過查閱死者的電腦和手機驴党,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來获茬,“玉大人港庄,你說我怎么就攤上這事∷∏” “怎么了鹏氧?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長佩谣。 經常有香客問我把还,道長,這世上最難降的妖魔是什么茸俭? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任吊履,我火速辦了婚禮,結果婚禮上瓣履,老公的妹妹穿的比我還像新娘率翅。我一直安慰自己,他們只是感情好袖迎,可當我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布冕臭。 她就那樣靜靜地躺著,像睡著了一般燕锥。 火紅的嫁衣襯著肌膚如雪辜贵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天归形,我揣著相機與錄音托慨,去河邊找鬼。 笑死暇榴,一個胖子當著我的面吹牛厚棵,可吹牛的內容都是我干的蕉世。 我是一名探鬼主播,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼婆硬,長吁一口氣:“原來是場噩夢啊……” “哼狠轻!你這毒婦竟也來了?” 一聲冷哼從身側響起彬犯,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤向楼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后谐区,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體湖蜕,經...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年宋列,在試婚紗的時候發(fā)現(xiàn)自己被綠了昭抒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡虚茶,死狀恐怖戈鲁,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情嘹叫,我是刑警寧澤婆殿,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站罩扇,受9級特大地震影響婆芦,放射性物質發(fā)生泄漏。R本人自食惡果不足惜喂饥,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一消约、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧员帮,春花似錦或粮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至硝岗,卻和暖如春氢哮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背型檀。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工冗尤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓裂七,卻偏偏與公主長得像皆看,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子碍讯,可洞房花燭夜當晚...
    茶點故事閱讀 44,573評論 2 353