// 2.跳转到登录页(携带一个参数 表示当前是在哪个页面点击的登出操作 重新登录之后再跳回来)
// path: 单纯的路径url /login
// fullPath:既有路径又有参数 /a?id=1001
this.$router.push(`/login?redirect=${this.$route.fullPath}`)//退出登录时记录当时的路由
/
// 兜底校验 通过组件身上的ref 1-拿到实例对象 2.对象身上的方法validate
this.$refs.loginForm.validate(async(valid) => {
if (valid) {
// 登录
this.$store.dispatch('user/asyncSetToken', this.loginForm).then(res => {
// console.log('跳转')
const redirect = this.$route.query.redirect
// console.log(redirect)
if (redirect) {
this.$router.push(redirect)
} else {
this.$router.push('/')
}
})
}
})
<template>
<sidebar-item
v-for="route in routes"
:key="route.path"
:item="route"
:base-path="route.path"
/>
</template>
<script>
export default {
computed: {
routes() {
// this.$router.options.routes可以拿到完整的路由表数据
return this.$router.options.routes
}
}
}
</script>
**问题2:为什么404/login路由没有显示到左侧菜单中?**这里面有一个属性叫做 hidden:true
{
path: '/login',
component: () => import('@/views/login/index'),
hidden: true
},
{
path: '/404',
component: () => import('@/views/404'),
hidden: true
}