Open yulinzhihou opened 2 years ago
在研究的时候,有个小小的问题目前没研究懂。比如我登录成功,已经持久化了权限菜单相关的对象,但在左侧菜单的跳转路径里面,又引用了 route.ts里面的静态文件,我尝试在route.ts里面调用 pinia 缓存的权限菜单动态写入,提示我没有初始化 pinia。暂时没有办法,就只能数据库里面存一套,静态文件写一套。暂时应付着,还不太会这一套。
src/routers/route.ts 本想在这个文件里面引入 Pinia 持久化的 MenuStore 结果提示如下报错。
src/routers/route.ts
Pinia
MenuStore
// routers/route.ts import { createRouter, createWebHistory, RouteRecordRaw } from "vue-router"; // * 导入所有router const metaRouters = import.meta.globEager("./modules/*.ts"); // * 处理路由表 export const routerArray: RouteRecordRaw[] = []; Object.keys(metaRouters).forEach(item => { Object.keys(metaRouters[item]).forEach((key: any) => { routerArray.push(...metaRouters[item][key]); }); }); /** * @description 路由配置简介(💢没有使用动态路由,路由全部配置在本地,需要使用动态路由请自行改造) * @param path ==> 路由路径 * @param name ==> 路由名称 * @param redirect ==> 路由重定向 * @param component ==> 路由组件 * @param meta ==> 路由元信息 * @param meta.requireAuth ==> 是否需要权限验证 * @param meta.keepAlive ==> 是否需要缓存该路由 * @param meta.title ==> 路由标题 * @param meta.key ==> 路由key,用来匹配按钮权限 * */ const routes: RouteRecordRaw[] = [ { path: "/", redirect: { name: "login" } }, { path: "/login", name: "login", component: () => import("@/views/login/index.vue"), meta: { requiresAuth: false, title: "登录页", key: "login" } }, ...routerArray, { // 找不到路由重定向到404页面 path: "/:pathMatch(.*)", redirect: { name: "404" } } ]; const router = createRouter({ // history: createWebHashHistory(), history: createWebHistory(), routes, strict: false, // 切换页面,滚动到最顶部 scrollBehavior: () => ({ left: 0, top: 0 }) }); export default router;
类似如上问题。我参考了 pinia 官网的解决文案,无赖自己还不太懂,所以在这里插个眼,看有没有好心大佬给出解决方案。万分感谢,如果自己后面研究出来了,也会来解答自己留下的这个疑问。
pinia
https://github.com/vuejs/pinia/discussions/971
暂时没吊在这棵树上,我现在数据库和接口都弄好了。为了不影响 后面的开发,我还是在 src/routers/modules/ 目录里面加了一次所有接口返回的接口,这样才能让左侧菜单栏点击跳转到对应的组件页面。
src/routers/modules/
// src/routers/modules/system.ts import { RouteRecordRaw } from "vue-router"; import { Layout } from "@/routers/constant"; // 系统组件模块 const systemRouter: Array<RouteRecordRaw> = [ { path: "/system", component: Layout, redirect: "/system/admin", meta: { title: "系统管理", icon: "icon" }, children: [ { path: "/system/admin", name: "admin", component: () => import("@/views/system/admin/index.vue"), meta: { keepAlive: true, requiresAuth: true, title: "管理员管理", key: "admin" } }, { path: "/system/role", name: "role", component: () => import("@/views/system/role/index.vue"), meta: { keepAlive: true, requiresAuth: true, title: "角色管理", key: "role" } }, { path: "/system/menu", name: "menu", component: () => import("@/views/system/menu/index.vue"), meta: { keepAlive: true, requiresAuth: true, title: "菜单管理", key: "menu" } }, { path: "/system/config", name: "config", component: () => import("@/views/system/config/index.vue"), meta: { keepAlive: true, requiresAuth: true, title: "系统配置", key: "config" } }, { path: "/system/attach", name: "attach", component: () => import("@/views/system/attach/index.vue"), meta: { keepAlive: true, requiresAuth: true, title: "附件管理", key: "attach" } } ] } ]; export default systemRouter;
这个场景我之前也遇到类似需求,我们采用动态写一个json到前端build包中 读取json文件
你好,更新了动态路由,可以拉最新代码看看
在研究的时候,有个小小的问题目前没研究懂。比如我登录成功,已经持久化了权限菜单相关的对象,但在左侧菜单的跳转路径里面,又引用了 route.ts里面的静态文件,我尝试在route.ts里面调用 pinia 缓存的权限菜单动态写入,提示我没有初始化 pinia。暂时没有办法,就只能数据库里面存一套,静态文件写一套。暂时应付着,还不太会这一套。
src/routers/route.ts
本想在这个文件里面引入Pinia
持久化的MenuStore
结果提示如下报错。类似如上问题。我参考了
pinia
官网的解决文案,无赖自己还不太懂,所以在这里插个眼,看有没有好心大佬给出解决方案。万分感谢,如果自己后面研究出来了,也会来解答自己留下的这个疑问。https://github.com/vuejs/pinia/discussions/971
暂时没吊在这棵树上,我现在数据库和接口都弄好了。为了不影响 后面的开发,我还是在
src/routers/modules/
目录里面加了一次所有接口返回的接口,这样才能让左侧菜单栏点击跳转到对应的组件页面。