Vue编程式路由导航和路由守卫

摘要:浏览器历史记录有两种写入方式:分别有push和replace,push是追加历史记录,replace是替换当前记录,路由跳转时是push,如何开启replace模式:

<router-link>的replace属性

作用:控制路由跳转时操作浏览器历史记录的模式

浏览器历史记录有两种写入方式:分别有push和replace,push是追加历史记录,replace是替换当前记录,路由跳转时是push

如何开启replace模式:

<router-link replace ...>news</router-link>

编程式路由导航

作用:不借助<router-link>实现路由跳转,让路由跳转更加灵活

具体编码:

methods: {
  pushShow(m) {
    this.$router.push({
      name: 'msg-d',   // 就是路由的名称,不能使用path
      params: {
        id: m.id,
        title: m.title,
        views: m.views
      }
    })
  },
  replaceShow(m) {
    this.$router.replace({
      name: 'msg-d',   // 就是路由的名称,不能使用path
      params: {
        id: m.id,
        title: m.title,
        views: m.views
      }
    })
  },
  back() {  // 后退
    this.$router.back()
  },
  forward() {   // 前进
    this.$router.forward()
  },
},

路由守卫

全局路由守卫

// 全局前置路由守卫——初始化的时候被调用,每次路由切换之前被调用
router.beforeEach((to, from, next) => {
  // to and from are both route objects. must call `next`.
  if(to.meta.isAuth){
    if(localStorage.getItem("user") === 'xiansen'){
      next();
    }else{
      alert("您没有权限!");
    }
  }else{
    next();
  }
})

// 全局后置路由守卫——初始化的时候被调用,每次路由切换之后被调用
router.afterEach((to, from) => {
  // to and from are both route objects.
  document.title = to.meta.title || '测试Vue脚手架'
})

独享路由守卫(在路由中配置该属性,方法功能和上面的一样)

beforeEnter:(to, from, next) => {   // 独享路由守卫
  if(to.meta.isAuth){
    if(localStorage.getItem("user") === 'xiansen'){
      next();
    }else{
      alert("您没有权限!");
    }
  }else{
    next();
  }
},


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_11225