欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Vue路由——路由嵌套和前置守卫

程序员文章站 2022-03-24 18:12:45
...

路由嵌套

main.js– 继续配置2级路由

一级路由path从/开始定义

二级路由往后path直接写名字, 无需 / 开头

嵌套路由在上级路由的children数组里编写路由信息对象

onst routes = [
  // ...省略其他
  {
    path: "/find",
    name: "Find",
    component: Find,
    children: [
      {
        path: "componentOne",
        component: ComponentOne
      },
      {
        path: "componentOne",
        component: ComponentOne
      },
      {
        path: "componentOne",
        component: ComponentOne
      }
    ]
  }
  // ...省略其他
]

声明导航router-link自带2个类名:

  • router-link-exact-active (精确匹配) url中hash值路径, 与href属性值完全相同, 设置此类名
  • router-link-active (模糊匹配) url中hash值, 包含href属性值这个路径

可以给这2个类名设置css样式来完成点击高亮效果

前置守卫

作用:路由跳转之前, 先执行一次前置守卫函数, 判断是否可以正常跳转
用法:在路由对象上使用固定方法beforeEach

const isLogin = true; // 登录状态(未登录)
router.beforeEach((to, from, next) => {
  if (to.path === "/my" && isLogin === false) {
    alert("请登录")
    next(false) // 阻止路由跳转
  } else {
    next() // 正常放行
  }
})

to 是目标
from 是来源
next() 放行, next(false)留在原地不跳转路由, next(path路径)强制换成对应path路径跳转

next()中可以放路径、配置对象、布尔值,如果不调用next()页面则一直停留在原地

相关标签: vue vue.js