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