最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vuerouter的beforeEach與afterEach鉤子函數(shù)的區(qū)別

 更新時(shí)間:2018年12月26日 14:44:11   作者:Clancey  
本文詳細(xì)的介紹了Vuerouter的beforeEach與afterEach鉤子函數(shù)的區(qū)別和使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

在路由跳轉(zhuǎn)的時(shí)候,我們需要一些權(quán)限判斷或者其他操作。這個(gè)時(shí)候就需要使用路由的鉤子函數(shù)。

定義:路由鉤子主要是給使用者在路由發(fā)生變化時(shí)進(jìn)行一些特殊的處理而定義的函數(shù)。

總體來講vue里面提供了三大類鉤子,兩種函數(shù)
1、全局鉤子
2、某個(gè)路由的鉤子
3、組件內(nèi)鉤子

兩種函數(shù):

1、Vue.beforeEach(function(to,form,next){}) /*在跳轉(zhuǎn)之前執(zhí)行*/

2.Vue.afterEach(function(to,form))/*在跳轉(zhuǎn)之后判斷*/

全局鉤子函數(shù)

顧名思義,它是對全局有效的一個(gè)函數(shù)

router.beforeEach((to, from, next) => {

  let token = router.app.$storage.fetch("token");

  let needAuth = to.matched.some(item => item.meta.login);

  if(!token && needAuth) return next({path: "/login"});

  next();

}); 

beforeEach函數(shù)有三個(gè)參數(shù):

  • to:router即將進(jìn)入的路由對象
  • from:當(dāng)前導(dǎo)航即將離開的路由
  • next:Function,進(jìn)行管道中的一個(gè)鉤子,如果執(zhí)行完了,則導(dǎo)航的狀態(tài)就是 confirmed (確認(rèn)的);否則為false,終止導(dǎo)航。

afterEach函數(shù)不用傳next()函數(shù)

某個(gè)路由的鉤子函數(shù)

顧名思義,它是寫在某個(gè)路由里頭的函數(shù),本質(zhì)上跟組件內(nèi)函數(shù)沒有區(qū)別。

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

路由組件的鉤子

注意:這里說的是路由組件!

路由組件 屬于 組件,但組件 不等同于 路由組件!所謂的路由組件:直接定義在router中component處的組件。如:

var routes = [
  {
  path:'/home',
  component:home,
  name:"home"
  }
]

在子組件中調(diào)用路由的鉤子函數(shù)時(shí)無效的。

在官方文檔上是這樣定義的:

可以在路由組件內(nèi)直接定義以下路由導(dǎo)航鉤子

  • beforeRouteEnter
  • beforeRouteUpdate (2.2 新增)
  • beforeRouteLeave

這里簡單說下鉤子函數(shù)的用法:它是和data,methods平級的。

beforeRouteLeave(to, from, next) {
  next()
},
beforeRouteEnter(to, from, next) {
  next()
},
beforeRouteUpdate(to, from, next) {
  next()
},
data:{},
method: {}

PS:在使用vue-router beforeEach鉤子時(shí),你也許會遇到如下問題:

源碼:

router.beforeEach((to, from, next) => {
//判斷登錄狀態(tài)簡單實(shí)例
var userInfo = window.localStorage.getItem('token');
if (userInfo) {
next();
} else {
next('/login');
}
})

然后你會發(fā)現(xiàn)出現(xiàn)如下錯(cuò)誤:出現(xiàn)dead loop錯(cuò)誤

解決方案:

router.beforeEach((to, from, next) => {
var userInfo = window.localStorage.getItem('token');//獲取瀏覽器緩存的用戶信息
if(userInfo){ //如果有就直接到首頁咯
next();
} else {
if(to.path=='/login'){ //如果是登錄頁面路徑,就直接next()
next();
} else { //不然就跳轉(zhuǎn)到登錄;
next('/login');
}

}
})

解決思路:

排除此時(shí)地址 = 轉(zhuǎn)向的地址 的情況,避免dead loop, 問題很簡單,但一不小心就入坑了

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

相關(guān)文章

  • nginx+vite項(xiàng)目打包以及部署的詳細(xì)過程

    nginx+vite項(xiàng)目打包以及部署的詳細(xì)過程

    我們使用nginx部署Vue項(xiàng)目,實(shí)質(zhì)上就是將Vue項(xiàng)目打包后的內(nèi)容同步到nginx指向的文件夾,下面這篇文章主要給大家介紹了關(guān)于nginx+vite項(xiàng)目打包以及部署的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • vue最強(qiáng)table vxe-table 虛擬滾動列表 前端導(dǎo)出問題分析

    vue最強(qiáng)table vxe-table 虛擬滾動列表 前端導(dǎo)出問題分析

    最近遇到個(gè)問題,后臺一次性返回2萬條列表數(shù)據(jù)并且需求要求所有數(shù)據(jù)必須全部展示,不能做假分頁,怎么操作呢,下面通過本文介紹下vue最強(qiáng)table vxe-table 虛擬滾動列表 前端導(dǎo)出問題,感興趣的朋友一起看看吧
    2023-10-10
  • Vue slot插槽作用與原理深入講解

    Vue slot插槽作用與原理深入講解

    插槽slot可以說在一個(gè)Vue項(xiàng)目里面處處都有它的身影,比如我們使用一些UI組件庫的時(shí)候,我們通??梢允褂貌宀蹃碜远x我們的內(nèi)容,這篇文章主要介紹了Vue3中slot插槽使用方式,需要的朋友可以參考下
    2023-01-01
  • VsCode里的Vue模板的實(shí)現(xiàn)

    VsCode里的Vue模板的實(shí)現(xiàn)

    這篇文章主要介紹了VsCode里的Vue模板的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Vue中android4.4不兼容問題的解決方法

    Vue中android4.4不兼容問題的解決方法

    這篇文章主要介紹了Vue中android4.4不兼容問題的解決方法,需要的朋友可以參考下
    2018-09-09
  • 前端單獨(dú)實(shí)現(xiàn)vue動態(tài)路由的示例代碼

    前端單獨(dú)實(shí)現(xiàn)vue動態(tài)路由的示例代碼

    Vue動態(tài)路由權(quán)限涉及根據(jù)用戶權(quán)限動態(tài)生成路由配置,實(shí)現(xiàn)此功能可增強(qiáng)應(yīng)用安全性、靈活性,提升用戶體驗(yàn)和開發(fā)效率,本文就來介紹一下前端單獨(dú)實(shí)現(xiàn)vue動態(tài)路由的示例代碼,感興趣的可以了解一下
    2024-09-09
  • Vue中對比scoped css和css module的區(qū)別

    Vue中對比scoped css和css module的區(qū)別

    這篇文章主要介紹了Vue中scoped css和css module的區(qū)別對比,scoped css可以直接在能跑起來的vue項(xiàng)目中使用而css module需要增加css-loader配置才能生效。具體內(nèi)容詳情大家參考下本文
    2018-05-05
  • vue3模塊創(chuàng)建runtime-dom源碼解析

    vue3模塊創(chuàng)建runtime-dom源碼解析

    這篇文章主要為大家介紹了vue3模塊創(chuàng)建runtime-dom源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • VUE前后端學(xué)習(xí)tab寫法實(shí)例

    VUE前后端學(xué)習(xí)tab寫法實(shí)例

    在本篇文章里小編給大家分享了關(guān)于VUE前后端學(xué)習(xí)tab寫法實(shí)例以及相關(guān)知識點(diǎn),需要的朋友們參考下。
    2019-08-08
  • vue-router清除url地址欄路由參數(shù)的操作代碼

    vue-router清除url地址欄路由參數(shù)的操作代碼

    這篇文章主要介紹了vue-router清除url地址欄路由參數(shù),本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2015-11-11

最新評論

苍山县| 固阳县| 青河县| 洛浦县| 朝阳县| 鄂托克旗| 新源县| 通江县| 原阳县| 正定县| 同江市| 东阿县| 麦盖提县| 故城县| 柘城县| 延边| 通城县| 芜湖县| 乐都县| 仙居县| 鹤山市| 江口县| 丰原市| 阜新| 眉山市| 湛江市| 砀山县| 浮梁县| 兴安盟| 腾冲县| 贞丰县| 聂拉木县| 遵义县| 玉门市| 夏河县| 诏安县| 中宁县| 阜宁县| 大连市| 固原市| 邵东县|