Vue.js Vue-将登录组件与App.Vue分开
我在如何将Vue.js Vue-将登录组件与App.Vue分开,vue.js,vue-router,Vue.js,Vue Router,我在如何将login组件与App.vue分离方面遇到了问题,因为它是默认的呈现页面。我想要实现的是呈现登录(如果用户没有令牌),在呈现仪表板、导航栏和菜单时重定向到加载页面 我不认为使用v-if=“loggedIn”仅仅隐藏菜单不是最佳做法,它仍然呈现App.vue的 请参阅下面我的当前设置 App.vue <template> <v-app> <v-navigation-drawer> ... </v-navigation-
login
组件与App.vue
分离方面遇到了问题,因为它是默认的呈现页面。我想要实现的是呈现登录
(如果用户没有令牌),在呈现仪表板
、导航栏
和菜单时重定向到加载
页面
我不认为使用v-if=“loggedIn”
仅仅隐藏菜单不是最佳做法,它仍然呈现App.vue的
请参阅下面我的当前设置
App.vue
<template>
<v-app>
<v-navigation-drawer>
...
</v-navigation-drawer>
<v-app-bar
...
</v-app-bar>
// This is where login.vue and dashboard.vue currently resides
<v-content>
<v-container>
<v-fade-transition mode="out-in">
<router-view />
</v-fade-transition>
</v-container>
</v-content>
</v-app>
</template>
<script>
import { mapGetters } from 'vuex'
export default {
data: () => ({
...
}),
computed: {
...mapGetters([
'loggedIn'
]),
}
}
</script>
routes.js
new Vue({
el: '#app',
render: h=>h(App),
vuetify,
router,
store,
});
router.beforeEach((to, from, next) => {
if (to.matched.some(record => record.meta.requiresAuth)) {
if (!store.getters.loggedIn) {
next({
name: 'login',
})
} else {
next()
}
} else if (to.matched.some(record => record.meta.requiresVisitor)) {
if (store.getters.loggedIn) {
next({
name: 'dashboard',
})
} else {
next()
}
} else {
next()
}
{
path: '/dashboard',
name: 'dashboard',
component: () => import('@/views/Dashboard'),
meta: { requiresAuth: true },
},
{
path: '/login',
name: 'login',
component: () => import('@/views/auth/Login'),
meta: { requiresVisitor: true }
},
我知道这已经有一段时间了,但它可以为其他用户工作
src/App.vue
<template>
<div id="app">
<router-view />
</div>
</template>
注意,我省略了一些代码
看看这个
我知道这已经有一段时间了,但它可能适用于其他用户
src/App.vue
<template>
<div id="app">
<router-view />
</div>
</template>
注意,我省略了一些代码
看看这个
const router = new Router({
mode: "history",
routes: [
{
path: "/",
name: "",
redirect: "home",
component: () =>
import(
/* webpackChunkName: "dashboard" */ "@/containers/dashboard/Dashboard"
),
children: [
{
path: "/home",
name: "home",
component: () =>
import(/* webpackChunkName: "home" */ "./../views/Home"),
},
{
path: "/about",
name: "about",
component: () =>
import(/* webpackChunkName: "about" */ "./../views/About"),
},
],
},
{
path: "/login",
name: "login",
component: () =>
import(/* webpackChunkName: "login" */ "./../views/Login"),
},
],
});