vue中的全局前置路由守卫报错
来源:1-1 课程简介
 
			夜下的猫
2022-03-09
在vue里,为什么使用了 $router.push() 的话,设置全局前置路由守卫(router.beforeEach)会报错,而转换成原生的window.location()就不会报错,另外,使用<router-link>和<a>这两个标签都没问题
代码如下:
<template>
  <header>
    <el-tabs v-model="active" @tab-click="handleClick">
      <el-tab-pane label="sports" name="sports" disabled></el-tab-pane>
      <el-tab-pane label="登录/注册" name="sub" value="sub"></el-tab-pane>
      <el-tab-pane label="用户管理" name="user" value="user" ></el-tab-pane>
      <el-tab-pane label="查询" name="search" value="search"></el-tab-pane>
      <el-tab-pane label="分类" name="classify" value="classify"></el-tab-pane>
      <el-tab-pane label="首页" name="main" value="main"></el-tab-pane>
    </el-tabs>
  </header>
</template>
<script>
export default {
  data(){
    return{
      active:"main"
    }
  },
  methods: {
    handleClick(tab){
      let url = tab.$vnode.data.attrs.value;
      console.log(url);
      let completeUrl = "/" + url;
      this.$router.push(completeUrl);
    }
  },
};
</script>
全局前置路由守卫代码如下:
router.beforeEach((to, from, next) => {
  let user = cookie.gcookie("form");
  let vens = cookie.gcookie("venuesForm");
  let admit = cookie.gcookie("admit");
  if (user || vens || admit) {
    next();
  } else if (
    to.name === "main" ||
    to.name === "Home" ||
    to.name === "Sub" ||
    to.name === "AdmitLog" ||
    to.name === "Admit") {
    next();
  } else {
    next({
      name: "Sub"
    })
  }
})

写回答
	1回答
- 
				
				能把报错发上来咱们看一下吗? 062022-03-21
相似问题
				老师他们常说的vue权限指的是什么?
				
			
			回答 1
				为什么路径跳转了页面不变
				
			
			
			
			
			
			
			
		回答 1
