vue中pinia数据一直重复获取之前的值的解决方法
作者:咤娃勇闯天涯
这篇文章主要介绍了vue中pinia数据一直重复获取之前的值的解决方法,如果想让pinia数据不会重复获取之前的值需要手动强制触发 Pinia store 的状态更新,文中有详细的解决方法,需要的朋友可以参考下
概要
如果想让pinia数据不会重复获取之前的值需要手动强制触发 Pinia store 的状态更新。
场景描述
有个业务如果token有效期失效需要重新跳转到login页面。
技术细节
不进行手动刷新
路由守卫
router.beforeEach( async(to: any, from: any, next: any) =>{
let userStore = useUserStore()
let token = userStore.token;
if(token){
try {
// token有效期验证(能访问表示token有效)
await userStore.queryUser(0,1)
next()
}catch (error){
//无效移除user信息并跳转到登录页
REMOVE_USER()
next("/login")
}
}else if(to.path == "/login"){
next()
}else {
next("/login")
}
})
pinia数据
let useUserStore = defineStore("User", {
state: (): any => {
return {
token: GET_USER(),
menuList: constantRoutes,
username: "",
avatar: ""
}
},
actions: {
refreshToken() {
this.token = GET_USER();
},
// other actions}



根据以上代码发现直接获取pinia中的数据,就算移除了user,数据还是保持没移除之前的数据。导致重复执行await userStore.queryUser(0,1);
把
try {
await userStore.queryUser(0,1)
next()
}catch (error){
REMOVE_USER()
next("/login")
}
改为
try {
await userStore.queryUser(0,1)
next()
}catch (error){
REMOVE_USER()
userStore.refreshToken()
next("/login")
}
实现手动刷新token的值获取最新的值。


成功获取到token的最新状态,token失效跳转到首页。
以上就是vue中pinia数据一直重复获取之前的值的解决方法的详细内容,更多关于vue pinia重复获取的资料请关注脚本之家其它相关文章!
