vue的路由動(dòng)畫(huà)切換頁(yè)面無(wú)法讀取meta值的bug記錄
vue路由動(dòng)畫(huà)切換頁(yè)面無(wú)法讀取meta值的bug
在vue項(xiàng)目的二級(jí)路由中,想要通過(guò)設(shè)置路由表中的meta值,來(lái)判斷頁(yè)面的slide-left 和slide-right的方向。
對(duì)于從左到右的排列,給routes依次設(shè)為1,2,3,4…的值,使其可以通過(guò)大小來(lái)判斷from和to,并顯示出不同的劃入 / 劃出效果
{ ?? ?path: 'aaa', ?? ?name: 'aaa', ?? ?component: aaa, ?? ?meta:1 }, { ?? ?path: 'bbb', ?? ?name: 'bbb', ?? ?component: bbb, ?? ?redirect:'bbb/baba', ?? ?meta:2, ?? ?children: [ ?? ?{ ?? ??? ?path: 'baba', ?? ??? ?name: 'baba', ?? ??? ?component: baba ?? ?}, { ?? ??? ?path: 'ccc', ?? ??? ?name: 'ccc', ?? ??? ?component: ccc ?? ?}, { ?? ??? ?path: 'ddd', ?? ??? ?name: 'ddd', ?? ??? ?component: ddd ?? ?}, { ?? ??? ?path: 'eee', ?? ??? ?name: 'eee', ?? ??? ?component: eee ?? ?}, { ?? ??? ?path: 'fff', ?? ??? ?name: 'fff', ?? ??? ?component: fff ?? ?}], }, { ?? ?path: 'ggg', ?? ?name: 'ggg', ?? ?meta:4, ?? ?component: ggg }, { ?? ?path: 'hhh', ?? ?name: 'hhh', ?? ?meta:3, ?? ?component: hhh },
然鵝,
在設(shè)置的過(guò)程中,其中一個(gè)路由始終無(wú)法讀到all這個(gè)路由中的meta:2
導(dǎo)致切換路由的動(dòng)畫(huà)效果出了問(wèn)題
問(wèn)題原因
讀不到的meta的是因?yàn)樵O(shè)置了子路由以及重定向。
解決方法
把meta值加在它的子路由上,
{ ?? ?path: 'bbb', ?? ?name: 'bbb', ?? ?component: bbb, ?? ?redirect:'bbb/baba', ?? ?//meta:2, ?? ?children: [ ?? ?{ ?? ??? ?path: 'baba', ?? ??? ?name: 'baba', ?? ??? ?component: baba, ?? ??? ?meta:2 ?? ?}, { ?? ??? ?path: 'ccc', ?? ??? ?name: 'ccc', ?? ??? ?component: ccc ?? ?}, { ?? ??? ?path: 'ddd', ?? ??? ?name: 'ddd', ?? ??? ?component: ddd ?? ?}, { ?? ??? ?path: 'eee', ?? ??? ?name: 'eee', ?? ??? ?component: eee ?? ?}, { ?? ??? ?path: 'fff', ?? ??? ?name: 'fff', ?? ??? ?component: fff ?? ?}], },
vue路由元信息meta
路由元信息
定義路由的時(shí)候可以配置meta字段。
那么我們可以利用meta字段來(lái)做什么呢?
設(shè)置title
? ? name: 'category', ? ? component: () => import('./view/creatBrainStorm/creat/category'), ? ? meta: { ? ? ? title: '卓腦' ? ? }
我們可以在鉤子函數(shù)router.beforeEach中獲取meta中的title數(shù)據(jù),并設(shè)置為頁(yè)面標(biāo)題。
router.beforeEach((to, from, next) => { ? const title = to.meta && to.meta.title ? if (title) { ? ? document.title = title ? } }
權(quán)限校驗(yàn)(例:登錄校驗(yàn))
{ ? ? name: 'cart', ? ? component: () => import('./view/cart'), ? ? meta: { ? ? ? title: '購(gòu)物車(chē)', ? ? ? requireAuth: true // 當(dāng)有這個(gè)字段的時(shí)候,我們就認(rèn)為這個(gè)路由頁(yè)面是要有登錄權(quán)限的 ? ? } ? }
檢查meta中元字段:
if (to.meta.requireAuth) { ? ? // 不直接通過(guò)本地緩存進(jìn)行判斷,而是通過(guò)Vuex的屬性狀態(tài)進(jìn)行判斷 ? ? if (store.state.user.token) { ? ? ? next() ? ? } else { ? ? ? next({ ? ? ? ? path: '/login', ? ? ? ? query: { redirect: to.fullPath } ? ? ? }) ? ? } ? } else { ? ? next() ? }
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
webpack+vue-cli項(xiàng)目中引入外部非模塊格式j(luò)s的方法
今天小編就為大家分享一篇webpack+vue-cli項(xiàng)目中引入外部非模塊格式j(luò)s的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09Vue Router動(dòng)態(tài)路由使用方法總結(jié)
這篇文章主要介紹了Vue Router動(dòng)態(tài)路由使用方法總結(jié),需要的朋友可以參考下2023-10-10談?wù)刅UE種methods watch和compute的區(qū)別和聯(lián)系
本篇文章主要介紹了談?wù)刅UE種methods watch和compute的區(qū)別和聯(lián)系,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08vue-router(this.$router)如何在新窗口打開(kāi)路由跳轉(zhuǎn)頁(yè)面
這篇文章主要介紹了vue-router(this.$router)如何在新窗口打開(kāi)路由跳轉(zhuǎn)頁(yè)面問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12使用vue開(kāi)發(fā)移動(dòng)端管理后臺(tái)的注意事項(xiàng)
這篇文章主要介紹了使用vue開(kāi)發(fā)移動(dòng)端管理后臺(tái)的注意事項(xiàng),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-03-03Vue項(xiàng)目中v-bind動(dòng)態(tài)綁定src路徑不成功問(wèn)題及解決
這篇文章主要介紹了Vue項(xiàng)目中v-bind動(dòng)態(tài)綁定src路徑不成功問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04Vue-cli創(chuàng)建項(xiàng)目從單頁(yè)面到多頁(yè)面的方法
本篇文章主要介紹了Vue-cli創(chuàng)建項(xiàng)目從單頁(yè)面到多頁(yè)面的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09