2.4 KiB
2.4 KiB
Breadcrumb 重复 key 修复前端实施记录
1. 实际改动内容
1.1 修复 Breadcrumb 重复 key 告警
修改文件:
ruoyi-ui/src/components/Breadcrumb/index.vueruoyi-ui/src/components/Breadcrumb/utils.js
改动内容:
- 将 Breadcrumb 列表项的
key生成逻辑从直接使用item.path调整为统一调用buildBreadcrumbItemKey - 新增
buildBreadcrumbItemKey(item, index)工具方法,使用path + title + index组合生成稳定且唯一的 key - 保持现有面包屑展示逻辑不变,不调整路由结构、不修改首页与当前页的展示顺序
根因说明:
- 当前项目的 Breadcrumb 会在非首页场景外额外插入一个
首页面包屑,路径固定为'/index' - 当当前页面本身也对应
'/index'时,原逻辑使用item.path作为transition-group的 key,会同时生成两个'/index' - Vue 因此抛出
Duplicate keys detected: '/index'
1.2 增加最小回归测试
修改文件:
ruoyi-ui/tests/breadcrumb-duplicate-key.test.js
改动内容:
- 新增最小 Node 断言脚本
- 校验当两个 Breadcrumb 条目 path 同为
'/index'时,生成的 key 仍然唯一 - 锁定本次问题,避免后续调整 Breadcrumb 时再次引入相同告警
2. 验证结果
2.1 Node 版本
项目中未提供 .nvmrc,因此未能直接执行 nvm use 自动切换。
实际使用版本:
nvm use 14.21.3
2.2 测试命令
已执行:
cd ruoyi-ui && source ~/.nvm/nvm.sh && nvm use 14.21.3 >/dev/null && node tests/breadcrumb-duplicate-key.test.js
结果:
- 测试通过
- 输出
breadcrumb duplicate key assertions passed
2.3 构建命令
已执行:
cd ruoyi-ui && source ~/.nvm/nvm.sh && nvm use 14.21.3 >/dev/null && npm run build:prod
结果:
- 构建成功
- 输出
DONE Build complete. The dist directory is ready to be deployed.
2.4 构建告警
存在 webpack 资源体积告警:
asset size limitentrypoint size limit
说明:
- 这些是现有项目静态资源体积告警
- 本次 Breadcrumb 修复未引入新的构建错误或新的语法告警
3. 影响范围
- 仅涉及前端 Breadcrumb 组件
- 未修改后端代码
- 未修改贷款定价业务字段逻辑
4. 当前结论
Duplicate keys detected: '/index'的 Breadcrumb 告警已修复- 修复方式限定在组件 key 生成逻辑,属于最短路径处理
- 前端回归测试与生产构建均已通过