一个使用pinia-plugin-persistedstate插件踩的坑
在一次项目中做路由鉴权时,在路由钩子中获取token的值时控制台报错。
显示没有注册pinia,要解决这个错,要在当前文件引入pinia
import { createPinia } from "pinia";
const pinia = createPinia();
const userStore = useUserStore(pinia);
router.beforeEach((to, from, next) => {
// 获取pinia中的token
const token = userStore.token;
console.log(userStore.token);
if (!token) {
next();
} else {
next();
}
});
但是这样又有问题,pinia-plugin-persistedstate插件失效了,控制台的输出是这样
可以看出路由钩子中获得的token是初始值,而且改变这个值,也不会存到浏览器了。
要解决这个问题需要这样修改代码
router.beforeEach((to, from, next) => {
const userStore = useUserStore();
// 获取pinia中的token
const token = userStore.token;
console.log(userStore.token);
if (!token) {
next();
} else {
next();
}
});
把const userStore = useUserStore() 放到路由钩子中,不再传入pinia
可以正常获取数据了。