Javascript 每个函数之前的vue路由器不返回已更新的项

Javascript 每个函数之前的vue路由器不返回已更新的项,javascript,vue.js,authentication,vuex,vue-router,Javascript,Vue.js,Authentication,Vuex,Vue Router,我被一个问题困住了。下面是一个场景。我提出了一个axios请求,它从存储区的cookies中获取访问令牌。然后我进行了一次变异,使isLoggedIn变为真。然后我从导航栏访问这个变量来更改菜单项。它起作用了。但是,当我尝试在每个函数之前使用中的getter访问isLoggedIn变量时,它仍然变为false。但在导航栏上却是如此 user/actions.js,我请求后端对其进行身份验证 从“axios”导入axios const checkUser=({commit})=>{ axios({

我被一个问题困住了。下面是一个场景。我提出了一个axios请求,它从存储区的cookies中获取访问令牌。然后我进行了一次变异,使isLoggedIn变为真。然后我从导航栏访问这个变量来更改菜单项。它起作用了。但是,当我尝试在每个函数之前使用
中的getter访问
isLoggedIn
变量时,它仍然变为false。但在导航栏上却是如此

user/actions.js,我请求后端对其进行身份验证

从“axios”导入axios
const checkUser=({commit})=>{
axios({
方法:“get”,
网址:'http://localhost:3000/api/auth/VpW02cG0W2vGeGXs8DdLIq3dQ62qMd0',
事实上,
标题:{
接受:“应用程序/json”,
},
})
。然后((res)=>{
提交('defineUser',res.data)
返回真值
})
.catch((错误)=>{
console.log(错误)
返回错误
})
}
导出默认值{
检查用户,
}
user/mutations.js,其中我设置了user和isLoggedIn变量

const defineUser=(state,res)=>{
state.user=res.user
state.isLoggedIn=true
}
导出默认值{
定义者,
}
然后我在路由器中调用动作func

router.beforeach(异步(到、从、下一个)=>{
const accessToken=VueCookies.get('access\u token')
if(accessToken){//首先我检查是否有访问令牌。我这样做是因为我检查每个请求是否已登录。因此我可以管理Navbar。
等待存储调度('user/checkUser'))
if(store.getters['user/isLoggedIn']){//这里有个问题,它在这里变为FALSE。如果有访问令牌,那么我检查它是否使isLoggedIn为true,并且所有门都为该用户打开
下一个()
}否则{//如果为false,则显示toast并移除访问令牌,然后重新加载页面
router.app.$bvToast.toast('您需要登录才能查看此页面!',{//另一个问题,当我删除async时,它无法仅使用getter读取toast。如果我放置了其他内容,它将非常有效。
标题:“不受欢迎”,
变体:“危险”,
可靠:正确
})
VueCookies.remove('access\u token')
router.go(router.currentRoute)
}
}else if(to.meta.requiresAuth){//so如果没有访问令牌并且此页面需要身份验证,则显示toast
router.app.$bvToast.toast('您需要登录才能查看此页面!'{
标题:“不受欢迎”,
变体:“危险”,
可靠:正确
})
}否则{//如果不需要身份验证和访问令牌,则只需进入页面即可
下一个()
}
})

如果您需要任何其他信息,请说,这样我可以与您分享。任何帮助都将不胜感激。

您正在等待
ing
checkUser
但它不会返回承诺。将其更改为:

constcheckuser=({commit})=>{
return axios({//注意'return'语句
...
}
或者,您可以使用
async/await

const checkUser=async({commit})=>{//async
wait axios({//wait
...
}