Vue router 路由守衛詳解
一、全局前置beforeEach
當 Local Storage 裡面存儲的 name 是 zhangsan 的時候, 點擊消息才顯示消息內容
1. 全局前置beforeEach
給router添加一個路由守衛 beforeEach
語法 :
router.beforeEach((to, from, next)=>{})
作用 : 初始化的時候 和 在每一次路由切換之前調用beforeEach裡面的函數
參數 :
1.to : 目標路由
2.from : 跳轉前的路由
3.next : 放行
2. 實現
二、需求二
如果有很多個路徑都需要做出判斷以後才跳轉, 就需要寫很多判斷的代碼, 判斷結構就會很復雜
這時需要判斷的路由裡面就可以放一個meta標簽
meta標簽提供關於HTML文檔的元數據 (元數據指用來描述數據的數據)
這時就可以使用meta裡面的標記字段進行判斷
三、全局後置守衛 afterEach
afterEach 和 beforeEach 使用方法基本一致.
區別就是afterEach沒有next這個參數
1. 修改title為自己的title
給每個路由指定自己的title名稱
const router = new VueRouter({ routes: [ { name: 'home', path: '/home', component: Home, meta: { title: "首頁" }, children: [ { name: "xiaoxi", path: 'message', component: Message, meta: { title: "消息" }, children: [ { name: 'xiangqing', path: 'detail', component: Detail, meta: { isAuth: true, title: "消息詳情" } } ] } ] }, { path: '/about', component: About, meta: { title: "關於" } } ] })
在 beforEach裡面修改title名
router.afterEach((to, from) => { document.title = to.meta.title || "測試" })
四、組件內守衛
1. beforeRouteEnter
通過路由規則, 進入該組件時被調用
2. beforeRouteLeave
通過路由規則, 離開該組件時被調用
總結
本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!