欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

非常實用的vue導航鉤子

 更新時間:2017年03月20日 16:49:59   作者:_Avon  
這篇文章主要為大家分享了一個非常實用的vue導航鉤子,具有一定的參考價值,感興趣的小伙伴們可以參考一下

導航鉤子

(譯者:『導航』表示路由正在發(fā)生改變。)

正如其名,vue-router 提供的導航鉤子主要用來攔截導航,讓它完成跳轉(zhuǎn)或取消。有多種方式可以在路由導航發(fā)生時執(zhí)行鉤子:全局的, 單個路由獨享的, 或者組件級的。

全局鉤子

你可以使用 router.beforeEach 注冊一個全局的 before 鉤子:

const router = new VueRouter({ ... })
router.beforeEach((to, from, next) => {
 // ...
})

當一個導航觸發(fā)時,全局的 before 鉤子按照創(chuàng)建順序調(diào)用。鉤子是異步解析執(zhí)行,此時導航在所有鉤子 resolve 完之前一直處于等待中。

每個鉤子方法接收三個參數(shù):

to: Route: 即將要進入的目標 路由對象

from: Route: 當前導航正要離開的路由

next: Function: 一定要調(diào)用該方法來 resolve 這個鉤子。執(zhí)行效果依賴 next 方法的調(diào)用參數(shù)。

next(): 進行管道中的下一個鉤子。如果全部鉤子執(zhí)行完了,則導航的狀態(tài)就是confirmed (確認的)。

next(false): 中斷當前的導航。如果瀏覽器的 URL 改變了(可能是用戶手動或者瀏覽器后退按鈕),那么 URL 地址會重置到 from 路由對應的地址。

next('/') 或者 next({ path: '/' }): 跳轉(zhuǎn)到一個不同的地址。當前的導航被中斷,然后進行一個新的導航。

確保要調(diào)用 next 方法,否則鉤子就不會被 resolved。

同樣可以注冊一個全局的 after 鉤子,不過它不像 before 鉤子那樣,after 鉤子沒有next 方法,不能改變導航:

router.afterEach(route => {
 // ...
})

某個路由獨享的鉤子

你可以在路由配置上直接定義 beforeEnter 鉤子:

const router = new VueRouter({
 routes: [
 {
  path: '/foo',
  component: Foo,
  beforeEnter: (to, from, next) => {
  // ...
  }
 }
 ]
})

這些鉤子與全局 before 鉤子的方法參數(shù)是一樣的。

組件內(nèi)的鉤子

最后,你可以使用 beforeRouteEnter 和 beforeRouteLeave,在路由組件內(nèi)直接定義路由導航鉤子,

const Foo = {
 template: `...`,
 beforeRouteEnter (to, from, next) {
 // 在渲染該組件的對應路由被 confirm 前調(diào)用
 // 不!能!獲取組件實例 `this`
 // 因為當鉤子執(zhí)行前,組件實例還沒被創(chuàng)建
 },
 beforeRouteLeave (to, from, next) {
 // 導航離開該組件的對應路由時調(diào)用
 // 可以訪問組件實例 `this`
 }
}

beforeRouteEnter 鉤子 不能 訪問 this,因為鉤子在導航確認前被調(diào)用,因此即將登場的新組件還沒被創(chuàng)建。

不過,你可以通過傳一個回調(diào)給 next來訪問組件實例。在導航被確認的時候執(zhí)行回調(diào),并且把組件實例作為回調(diào)方法的參數(shù)。

beforeRouteEnter (to, from, next) {
 next(vm => {
 // 通過 `vm` 訪問組件實例
 })
}

你可以 在 beforeRouteLeave 中直接訪問 this。這個 leave 鉤子通常用來禁止用戶在還未保存修改前突然離開??梢酝ㄟ^ next(false) 來取消導航。

在做項目的時候,需求是在關(guān)閉頁面的時候給客戶彈出一個框,增加客戶停留的時間。 最近看了一下這個鉤子,覺得很不錯。

本文已被整理到了《Vue.js前端組件學習教程》,歡迎大家學習閱讀。

關(guān)于vue.js組件的教程,請大家點擊專題vue.js組件學習教程進行學習。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論