vue3在路由里面使用pinia进行路由守卫验证报错

文章讲述了在Vue3项目中,由于router的挂载时间早于pinia的状态管理库pinia的使用,导致在路由守卫中尝试访问pinia存储的token时出现错误。解决方案是在router的beforeEach钩子函数中确保pinia已经挂载后再进行操作。
摘要由CSDN通过智能技术生成

在vue3路由守卫使用pinia里面存储的token跟sessionStorage中的tokne进行比对出现报错,如下。

 很简单的问题,网上的结果五花八门,最终看文档解决了。原因router挂载比pinia要早,守卫在在使用pinia时,pinia还没有挂载,把pinia写在守卫里面即可解决问题

router.beforeEach((to, from, next) => {
  //在这里创建loginStore 即可
  const loginStore = useLoginStore();
  const token = sessionStorage.getItem('token')
  if (to.path == '/') return next()
  if (token == loginStore.Token) {
    next()
  } else {
    router.push('/')
  }

})

引用中提到,路由标签栏是展示当前所处路由信息和父辈路由信息的导航栏,类似于浏览器的标签栏,每个标签对应一个路由页面。而引用中提到,路由标签栏需要的数据就是曾经访问过的路由页面。 对于Vue 3的Pinia库,它是一个状态管理库,用于在Vue应用程序中管理全局状态。Pinia并不直接提供路由标签栏的功能,但可以结合Vue Router来实现路由标签栏。 要实现Pinia路由标签栏,可以按照以下步骤进行操作: 1. 首先,确保你已经安装了Vue Router和Pinia库,并正确配置它们。 2. 然后,在Vue Router的路由配置中,可以使用导航守卫(beforeEach)来监听路由的变化。在每次路由切换时,将当前路由信息添加到Pinia的状态管理中。这样就可以记录下用户访问过的路由页面。 3. 在Pinia的状态管理中,定义一个用于存储路由标签的状态字段,例如`tabs`。这个字段可以是一个数组,每个元素表示一个路由标签,包含路由信息和其他相关数据。 4. 在Vue组件中,可以使用Pinia的`useStore`函数来获取Pinia的状态管理实例,并将存储路由标签的状态字段`tabs`作为计算属性或者直接在模板中使用。 5. 最后,根据存储的路由标签数据,可以在模板中展示出路由标签栏,通过循环遍历`tabs`数组,并使用Vue Router的`router-link`组件来生成每个路由标签的链接。 通过以上步骤,你就可以在Vue 3中使用Pinia和Vue Router来实现路由标签栏了。这样,用户就可以方便地切换和管理他们访问过的路由页面。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值