Vue3---全局守卫中正确使用pinia中数据--官网权威处理方式

问题: router.js使用pinia报错 getActivePinia was called with no active Pinia. Did you forget to install

分析原因: 由于在main.js中,不管怎么注册,router总是比pinia先创建,所以,当我们在router.js中使用pinia时,就会出现pinia还未注册的提示,只需要将使用位置迁移即可

看了很多解决方案,到处引入,麻烦-,看看官网的权威处理吧

官网解释: 在组件外使用存储
https://pinia.web3doc.top/core-concepts/outside-component-usage.html

解决方式如下

在router/index.js

import { createRouter, createWebHistory } from 'vue-router'
import { useUserStore } from '@/stores/user'
  // ❌ 根据导入的顺序,这将失败
  // const userStore = useUserStore()
 // console.log('11', userStore.userInfo.token)   此处使用就会报错哟~~~

const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes: [
    //省略代码、、、
  ],
  scrollBehavior() {
    // 始终滚动到顶部
    return { top: 0 }
  }
})

router.beforeEach(() => {
    // ✅ 这将起作用,因为路由器在之后开始导航
   // 路由已安装,pinia 也将安装
  const userStore = useUserStore()
  console.log('11', userStore.userInfo.token)
})

export default router

我欲乘风归去,又恐琼楼玉宇

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值