这样有问题吗?import { defineStore } from "pinia"; import { RouteRecordRaw } from "vue-router"; import { loadRoutes } from "@/utils/componentLoader"; interface userState { access_token: string; routes: RouteRecordRaw[]; } export default defineStore("user", { state(): userState { return { access_token: "", routes: [], }; }, actions: { setToken(token: string) { this.access_token = token; }, setRoutes(menus: any[]) { if (!this.routes.length) { this.routes = loadRoutes(menus); } else { this.routes = [...this.routes, ...loadRoutes(menus)].filter( (route, index, self) => index === self.findIndex( (r) => r.path === route.path && r.name === route.name ) ); } }, }, getters: { getToken: (state: userState) => state.access_token, getRoutes: (state: userState) => state.routes, }, });
时间: 2024-04-18 09:31:51 浏览: 175
Vue3-demo 示例代码
在你提供的代码中,使用了 `filter` 和 `findIndex` 的方式对 `this.routes` 进行去重操作。从代码逻辑上看,这种方式是可行的,它会筛选出数组中的唯一元素。但是需要注意的是,这种方式是基于对象的属性进行比较的,因此要确保 `RouteRecordRaw` 对象的属性是可比较的。
另外,你在 `setRoutes` 方法中使用了 `loadRoutes` 函数,但是这个函数在代码中没有提供,所以无法确定它的具体实现。请确保 `loadRoutes` 函数能够正确地加载并返回路由信息。
总的来说,从代码片段来看,没有明显的问题。但是需要确保 `RouteRecordRaw` 对象的属性可以正确比较,并且 `loadRoutes` 函数能够正确地加载路由信息。如果有进一步的问题,请提供更多上下文信息,以便更好地帮助你。
阅读全文