1.全局路由守卫
vue-router4.0中取消了next,可以不写;return true 或 Undefined 通过导航验证,return false 取消导航。
1. router.beforeEach((to,from)=>{}),next是可选参数,可不写,return false是取消导航,如果返回值为true或者是undefined就是通过验证
(路由跳转之前拦截)
2. router.afterEach((to,from)=>{}) 路由跳转之后,语法糖: to.fullPath 可以直接获取当前的URL路径及传参
2.路由独享守卫
let routes = [
{
path:"/index",
name:"index",
component:index,
beforeEnter:(to,from) =>{
//to:当用户点击进入当前页面时,进行一些拦截设置
//from:当来自其他页面进入当前页面的时候,拦截提示用户
alert('路由独享守卫')
}
}
]
3.组件内路由守卫
import { onBeforeRouteLeave, onBeforeRouteUpdate } from 'vue-router';
onBeforeRouteUpdate((to,from)=>{//当前组件路由改变后触发
console.log(to);
})
onBeforeRouteLeave((to,from)=>{//离开当前的组件时触发
alert('')
})
4.新增的路由添加方法
// 添加一级路由
router.addRoute({
path:"/router",
name:"router",
component:()=>import('../views/router.vue')
})
// 添加二级路由
router.addRoute({ name: 'admin', path: '/admin', component: Admin })//1 父路由
router.addRoute('admin', { path: 'settings', component: AdminSettings })//1 子路由
// * 如果上面做法无效,就添加这行代码
router.replace(router.currentRoute.value.fullPath)//替换当前路由页面的路由
router.removeRoute('router'); // 删除路由;