Vue.js Vue路由器不';t检查值是否存在后重定向到页面

Vue.js Vue路由器不';t检查值是否存在后重定向到页面,vue.js,vuejs2,vuex,vue-router,store,Vue.js,Vuejs2,Vuex,Vue Router,Store,你好。我正在尝试为我的vue应用程序创建一个保护,该保护仅在存在状态值(非null或未定义)时重定向到页面。然而,当我使用“beforeEnter”时,我会得到一个循环引用,它不会将我重定向到页面。如果我使用“beforeRouteEnter”,我会正常重定向,但如果我更新了页面,我不会重定向到上一页。这里到底出了什么问题?方法可以在检查存储状态后将我重定向到页面 存储区中的方法非常简单,我只需在我的状态中保存来自api调用的任何内容,该状态以null开头。这里到底出了什么问题 import V

你好。我正在尝试为我的vue应用程序创建一个保护,该保护仅在存在状态值(非null或未定义)时重定向到页面。然而,当我使用“beforeEnter”时,我会得到一个循环引用,它不会将我重定向到页面。如果我使用“beforeRouteEnter”,我会正常重定向,但如果我更新了页面,我不会重定向到上一页。这里到底出了什么问题?方法可以在检查存储状态后将我重定向到页面

存储区中的方法非常简单,我只需在我的状态中保存来自api调用的任何内容,该状态以null开头。这里到底出了什么问题

import Vue from 'vue'
import VueRouter from 'vue-router'
import form'@/components/form.vue'
import values'@/components/values.vue'
import store from '@/store.js'


Vue.use(VueRouter)
const routes = [
    { 
        path: '/', 
        component: form
    },
    { 
        path: '/values', 
        component: values,
        beforeRouteEnter (to, from, next) {
            guard(to, from, next)
        },
    }
]
const router = new VueRouter({
    mode: 'history',
    routes
})

const guard = function(to, from, next){
    let info = store.getters.result
    if(info){
        next('/values')
    } else {
        next('/')
    }
}

export default router
您必须使用,因为它是组件内钩子的名称,在那里不起作用。获得循环引用的原因是
next('/values')
重定向到自身。将其更改为
next()
,以告知路由器继续使用当前路由而不重定向:

const guard=函数(到、从、下一个){
let info=store.getters.result
如果(信息){
下一个()
}否则{
下一个(“/”)
}
}