ZBLOG

import { defineStore } from "pinia"; import { reqLogin } from '@/api/user'; import type { LoginForm, loginResponseData } from "@/api/user/type"; import type { UserState } from "./type/type"; // 引入本地存储文件 import { SET_TO

这段代码的问题在于 menuRoutes 属性的类型定义与实际赋值不符合,导致了类型错误。

根据报错信息,UserState.menuRoutes 的类型应该是一个数组,其中元素类型为 RouteRecordRaw。而实际上我们将常量路由数组 constantRoute 直接赋值给了 menuRoutes 属性,因此 TypeScript 推断出 menuRoutes 的类型为 (typeof constantRoute)[],即包含多个对象的数组。

要解决这个问题,可以将 UserState.menuRoutes 的类型改为 [RouteRecordRaw](注意方括号的位置),表示只包含一个元素的数组,并且该元素是一个 RouteRecordRaw 类型对象。修改后的代码如下:

  1. import { defineStore } from "pinia";
  2. import { reqLogin } from '@/api/user';
  3. import type { LoginForm, loginResponseData } from "@/api/user/type";
  4. import type { UserState } from "./type/type";
  5. // 引入本地存储文件
  6. import { SET_TOKEN, GET_TOKEN } from "@/utils/token";
  7. // 引入路由(常量路由)
  8. import { constantRoute } from "@/router/routes";
  9. let useUserStore = defineStore('User', {
  10. // 小仓库 存储数据的地方
  11. state: (): UserState => {
  12. return {
  13. token: GET_TOKEN(),//用户唯一标识
  14. menuRoutes: [constantRoute], // 修改此处
  15. }
  16. },
  17. actions: {
  18. async login(loginForm: LoginForm): Promise<boolean> {
  19. const res = await reqLogin(loginForm)
  20. if (res.code === 200) {
  21. // 登录成功,将 token 存入本地存储
  22. SET_TOKEN(res.data.token)
  23. // 将 token 存入 store
  24. this.token = res.data.token
  25. return true
  26. } else {
  27. return false
  28. }
  29. }
  30. },
  31. })
  32. export default useUserStore;

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=4493

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?