我想重定向到登录屏幕时,我试图访问屏幕登录后,当我没有登录



↓错误信息

Uncaught (in promise) Error: Infinite redirect in navigation guard at eval

↓main.js

import { createApp } from 'vue';
import App from './App.vue';
import router from './router';
import store from './store/store'
import firebase from 'firebase';
import config from './firebase.config';
firebase.initializeApp(config);
const app = createApp(App); app.use(router); app.use(store); app.mount('#app');
router.beforeEach((to, from, next) => {
if (to.path === '/home') {
firebase.auth().onAuthStateChanged(user => {
if (user) {
next('/home')
} else {
next('/')
}
})
} else {
next();
} });

↓router.js

import { createRouter, createWebHistory } from 'vue-router';
import Login from './components/Login';
import SignUp from './components/SignUp';
import Home from './components/Home';
const router = createRouter({
history: createWebHistory(),
routes: [
{ path: '/', component: Login }, //Login screen path
{ path: '/signup', component: SignUp }, //New registration screen path
{ path: '/home', component: Home }, //Screen path after login
],
});
export default router;

如上所述,我试着自己写代码,但效果不太好。是更好地准备一个单独的标志,而不是检查用户信息与onauthstatechange ?如果你能教我,我会很感激🙇‍♂️

next('/home')更改为next()

原因:如果你使用next('/home'),下面的代码将再次运行,并产生一个无限循环

router.beforeEach((to, from, next) => {
if (to.path === '/home') {
// this would be running again
...
}

最新更新