苏州建设招投标网站个人网站备案 导航

张小明 2025/12/31 14:10:23
苏州建设招投标网站,个人网站备案 导航,网站外链如何建设最有用,51社社播放器文章目录Vue2 动态路由失效的根因与正确解法#xff1a;用 Vuex 管理权限路由一、问题复现#xff1a;路由加了#xff0c;页面却没变二、根因分析#xff1a;vue-router 不具备响应式能力1️⃣ addRoutes 只影响「路由匹配」2️⃣ router.options.routes 不是响应式数据三…文章目录Vue2 动态路由失效的根因与正确解法用 Vuex 管理权限路由一、问题复现路由加了页面却没变二、根因分析vue-router 不具备响应式能力1️⃣ addRoutes 只影响「路由匹配」2️⃣ router.options.routes 不是响应式数据三、正确架构菜单 Vuex 路由状态核心设计思想重点四、最小可用实现去掉项目噪音版1️⃣ permission 模块核心2️⃣ 路由守卫必须 replace3️⃣ 侧边栏只从 Vuex 读五、我在项目中踩过的几个真实坑坑 1动态 import 导致菜单不显示坑 2后端路径错误直接导致路由崩溃坑 3数据判断不严谨导致“假空数组”坑 4computed 重复定义导致菜单逻辑失效六、最终收益Vue2 动态路由失效的根因与正确解法用 Vuex 管理权限路由在 Vue2 项目中做动态路由时很多人都会遇到一个诡异问题接口已经返回了动态路由router.addRoutes()也调用了但页面菜单就是不刷新。我在实际项目中完整踩过这个坑最终总结出一个稳定、可维护、可扩展的解决方案路由只负责跳转菜单必须交给 Vuex 管理。一、问题复现路由加了页面却没变典型现象接口返回 9 个路由router.addRoutes(accessRoutes)执行成功控制台打印router.options.routes是完整的侧边栏菜单仍然只有 2 个这说明一件事路由层生效了但 UI 层完全不知道发生了变化。二、根因分析vue-router 不具备响应式能力这是 Vue2 动态路由最容易被忽略的一点1️⃣addRoutes只影响「路由匹配」router.addRoutes(accessRoutes)它只做一件事让 URL 能匹配到组件但它不会触发组件重新渲染更新侧边栏通知 Vue 进行响应式更新2️⃣router.options.routes不是响应式数据如果你的菜单是这样写的this.$router.options.routes那菜单永远不会自动刷新因为它不是 Vue data不是 Vuex stateVue 根本监听不到变化三、正确架构菜单 Vuex 路由状态核心设计思想重点后端返回菜单 / 权限 ↓ Vuex generateRoutes ↓ Vuex.state.routes ←—— 侧边栏渲染 ↓ router.addRoutes ←—— 路由跳转一句话总结vue-router 管跳转Vuex 管“展示用的路由数据”四、最小可用实现去掉项目噪音版1️⃣ permission 模块核心// store/modules/permission.js import { constantRoutes } from /router const state { routes: [], // 侧边栏使用 addRoutes: [] // 动态路由 } const mutations { SET_ROUTES(state, routes) { state.addRoutes routes state.routes constantRoutes.concat(routes) } } const actions { generateRoutes({ commit }, asyncRoutes) { commit(SET_ROUTES, asyncRoutes) return asyncRoutes } } export default { namespaced: true, state, mutations, actions }2️⃣ 路由守卫必须 replacerouter.beforeEach(async (to, from, next) { const hasToken getToken() if (!hasToken) { return next(/login) } const hasRoles store.getters.roles?.length 0 if (hasRoles) { return next() } try { await store.dispatch(user/getInfo) const accessRoutes await store.dispatch( permission/generateRoutes, asyncRoutesFromApi ) router.addRoutes(accessRoutes) // 关键重新触发导航 next({ ...to, replace: true }) } catch (e) { next(/login) } })❗ 不加replace: true新路由本次不会生效3️⃣ 侧边栏只从 Vuex 读computed: { routes() { return this.$store.state.permission.routes } } 禁止使用this.$router.options.routes五、我在项目中踩过的几个真实坑坑 1动态 import 导致菜单不显示// ❌ Vue2 场景下不稳定 component: () import(/views/${path}) // ✅ 稳定方案 component: resolve require([/views/${path}], resolve)坑 2后端路径错误直接导致路由崩溃解决方案兜底 Layoutif (!item.component || item.component Layout) { menu.component Layout }坑 3数据判断不严谨导致“假空数组”// ❌ if (res.data res.data.length 0) // ✅ if (Array.isArray(res.data) res.data.length 0)坑 4computed 重复定义导致菜单逻辑失效// ❌ 后者会覆盖前者 computed: {...} computed: {...} // ✅ computed: { ...mapGetters([]), sidebar() {} }六、最终收益采用“菜单 Vuex 路由状态”后菜单 100% 响应式动态路由稳定生效权限逻辑集中管理后端可完全控制前端菜单结构架构清晰可维护性明显提升这套方案已经在真实业务项目中长期运行适合中大型 Vue2 管理系统。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

亚成成品网站源码现在做个网站要多少钱

还在为PDF文件处理而烦恼吗?每次需要提取文字内容都得依赖笨重的办公软件?面对加密PDF束手无策?Poppler-Windows正是你需要的解决方案。这款专为Windows系统优化的轻量级工具集,将Linux下强大的PDF处理能力带到了Windows平台&…

张小明 2025/12/31 14:09:52 网站建设

flash网站项目背景天元建设集团有限公司联系方式

为什么你的拯救者性能被封印?深度解锁BIOS隐藏潜能 【免费下载链接】LEGION_Y7000Series_Insyde_Advanced_Settings_Tools 支持一键修改 Insyde BIOS 隐藏选项的小工具,例如关闭CFG LOCK、修改DVMT等等 项目地址: https://gitcode.com/gh_mirrors/le/L…

张小明 2025/12/31 14:08:46 网站建设

爱站网挖掘工具电子商务公司经营范围有哪些

目录已开发项目效果实现截图开发技术介绍核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!已开发项目效果…

张小明 2025/12/31 14:08:14 网站建设

wordpress做中英文站网站 特效

【建议收藏】网络安全小白成长指南:从基础到实践的完整学习路径 网络安全学习需遵循"基础夯实→工具实践→专项突破→持续更新"路径。构建网络基础、操作系统和编程能力三大知识体系;掌握Nmap、Wireshark等工具实践技能;选择Web安…

张小明 2025/12/31 14:07:39 网站建设

网站维护和制作怎么做会计分录哪个网站做刷手最好

第一章:Open-AutoGLM云手机平台概述Open-AutoGLM 是一款基于云端虚拟化技术的智能移动设备管理平台,旨在为开发者、测试团队和企业用户提供可远程操控、自动化运行的“云手机”服务。该平台融合了Android容器化、GPU加速渲染与大模型驱动的自动化控制能力…

张小明 2025/12/31 14:07:07 网站建设

郑州网站建设排行榜哇塞fm网站维护

第一章:飞算JavaAI代码自动生成革命的背景与意义在软件开发日益复杂的今天,传统编码模式面临效率瓶颈与人力成本上升的双重挑战。飞算JavaAI代码自动生成技术应运而生,标志着软件工程从“人工编写”向“智能生成”的关键跃迁。该技术依托深度…

张小明 2025/12/31 14:06:00 网站建设