全局路由守卫和pinia同时使用存在的问题

// A代码
// src/router/index.js

import { useMain } from '../store'
const useStoreMain = useMain()

router.beforeEach((to, from, next) => {
    const isManager=useStoreMain.isManager
    // startsWith:匹配以括号内为开头的内容
    if (to.path.startsWith("/HomeManage")) {
        if (isManager) {
            next() // 跳转到下一个路由
        } else {
            ElMessage.error("请先登录")
            next('/Login')
        }
    }
   next()
})

A代码导致如下报错:

报错原因: router 挂载比 pinia 早, 守卫在使用pinia时,pinia还没有挂载

解决办法如B代码:只需将 pinia 写在全局路由守卫里面

// B代码
// src/router/index.js
​
import { useMain } from '../store'
​
router.beforeEach((to, from, next) => {
    const useStoreMain = useMain()
    const isManager=useStoreMain.isManager
    // startsWith:匹配以括号内为开头的内容
    if (to.path.startsWith("/HomeManage")) {
        if (isManager) {
            next() // 跳转到下一个路由
        } else {
            ElMessage.error("请先登录")
            next('/Login')
        }
    }
   next()
})

A代码和B代码只有 pinia创建语句位置 的不同

如果对你有帮助,希望能得到你的点赞或收藏或关注,这是对我最好的鼓励;

如你有问题或疑惑,欢迎在评论区写下,必将努力解答;

如本文有误区,希望你不吝赐教,让我们共勉!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值