首頁  >  文章  >  web前端  >  在Vue2.X中使用路由和鉤子函數

在Vue2.X中使用路由和鉤子函數

亚连
亚连原創
2018-06-06 16:09:351650瀏覽

下面我就為大家分享一篇基於Vue2.X的路由和鉤子函數詳解,具有很好的參考價值,希望對大家有幫助。

最近上班有些忙,好久沒有更新文章,也沒學習新的東西。

今天就來說這個路由鉤子吧。

導航和鉤子函數:

導航:路由正在改變關鍵字:路由變

鉤子函數:在路由切換的不同階段呼叫不同的節點函數(鉤子函數在我看來也就是:某個節點和時機觸發的函數)。

鉤子函數 主要用來攔截導航,讓它完成跳轉或取消,在導航的不同階段來執行不同的函數 ,最後鉤子函數的執行結果會告訴導航怎麼做。 。

導航在所有鉤子 resolve 完之前一直處於 等待中,等待鉤子函數告訴它下一步該怎麼做。用next()來指定。

我來給大家一個登陸的例子

router.beforeEach(({meta, path}, from, next) => {   
 
  const {auth = true} = meta  // meta代表的是to中的meta对象,path代表的是to中的path对象 
 
  var isLogin = Boolean(store.state.user.id) // true用户已登录, false用户未登录  
   
  if (auth && !isLogin && path !== '/login') { // auth 代表需要通过用户身份验证,默认为true,代表需要被验证, false为不用检验 
    return next({ path: '/login' }) // 跳转到login页面 
  } 
 
 
  next() // 进行下一个钩子函数 
})

先說這個beforeEach的鉤子函數,它是一個全域的before 鉤子函數, (before each)意思是在每次每一個路由改變的時候都得執行一遍。

它的三個參數:

to: (Route路由物件) 即將要進入的目標路由對象to物件下面的屬性: path params query hash fullPath matched name meta(在matched下,但本例可以直接用)

from: (Route路由物件) 目前導航正要離開的路由

next: (Function函數) 一定要呼叫該方法來resolve 這個鉤子。呼叫方法:next(參數或空) ***必須呼叫

next(無參數的時候): 進行管道中的下一個鉤子,如果走到最後一個鉤子函數,那麼導航的狀態就是confirmed (確認的)

next('/') 或next({ path: '/' }): 跳到一個不同的位址。目前的導航被中斷,然後進行一個新的導航。

全域鉤子函數之全域的afterEach鉤子:

after 鉤子沒有next 方法,不能改變導航,代表已經確定好了導航怎麼去執行後,附帶的一個執行鉤子函數

元件內的鉤子函數:( beforeRouteEnter 和beforeRouteLeave 再加一個watch函數)

#vue2.X的元件內鉤子函數比vue1.X減少了許多。 。

使用元件本身的生命週期鉤子函數來取代activate 和deactivate

在$router 上使用watcher 來回應路由變更

canActivate 可以被router 的設定中的beforeEnter中實作

canDeactivate 已經被beforeRouteLeave 取代, 後者在一個元件的根級定義中指定。這個鉤子函數在呼叫時是將元件的實例作為其上下文的。

canReuse 已被移除,因其容易混淆且很少被用到。

用ajax取得資料的data(to, from, next) 鉤子用元件內beforeRouteEnter (to, from, next)來取代

上面是我整理給大家的,希望今後會對大家有幫助。

相關文章:

在vue-cli專案中proxyTable跨域問題

在React元件中refs的使用方法

在webpack中使用devtool詳解

以上是在Vue2.X中使用路由和鉤子函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn