$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"
})
}
})

课程紧跟Vue3版本迭代,企业主流版本Vue2+Vue3全掌握
了解课程