一个使用pinia-plugin-persistedstate插件踩的坑

2,924 阅读1分钟

一个使用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插件失效了,控制台的输出是这样

image.png

可以看出路由钩子中获得的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

image.png

可以正常获取数据了。