Vue-router有哪些鉤子?使用場景?vue
router的實現能夠點 這裏
前面咱們用大白話講過什麼是鉤子,這裏在重複一下,就是在什麼什麼以前,什麼什麼以後,英文叫hooks,專業點叫生命週期,裝逼點能夠叫守衛...vue-router
vue-router中也存在鉤子的概念,分爲三步記憶異步
很好理解,全局守衛就是能監聽到全局的router動做學習
const router = new VueRouter({ ... }) // to 要進入的目標路由對象 // from 當前的路由對象 // next resolve 這個鉤子,next執行效果由next方法的參數決定 // next() 進入管道中的下一個鉤子 // next(false) 中斷當前導航 // next({path}) 當前導航會中斷,跳轉到指定path // next(error) 中斷導航且錯誤傳遞給router.onErr回調 // 確保前置守衛要調用next,否然鉤子不會進入下一個管道 router.beforeEach((to, from, next) => { // ... })
// 與前置守衛基本相同,不一樣是沒有next參數 router.afterEach((to, from) => { // ... })
跟router.beforeEach相似,在全部組件內守衛及異步路由組件解析後觸發this
參數及意義同全局守衛,只是定義的位置不一樣code
const router = new VueRouter({ routes: [ { path: '/', component: Demo, beforeEnter: (to, from, next) => { // ... }, afterEnter: (to, from, next) => { // ... }, } ] })
組件內新一個守衛, beforeRouteUpdate,在組件能夠被複用的狀況下觸發,如 /demo/:id, 在/demo/1 跳轉/demo/2的時候,/demo 能夠被複用,這時會觸發beforeRouteUpdatecomponent
const Demo = { template: `...`, beforeRouteEnter (to, from, next) { ... }, // 在當前路由改變,可是該組件被複用時調用 beforeRouteUpdate (to, from, next) { ... }, beforeRouteLeave (to, from, next) { ... } }
路由進入前最典型的能夠作一些權限控制, 路由離開時清除或存儲一些信息,任務等等router
vue-router中鉤子分爲全局的,局部的,以及組件三種形式, 他們都有前置守衛以及後置守衛, 其中組件的前置守衛不能拿到當前組件的this,因組件尚未被建立,能夠經過next的參數進行回傳this,前置守衛必須調用next方法,不然不會進入下一個管道cdn
JS每日一題能夠當作是一個語音答題社區
天天利用碎片時間採用60秒內的語音形式來完成當天的考題
羣主在第二天0點推送當天的參考答案對象