包含: - furniture-3d-system:Next.js 16 全栈应用(资产中心、产品管理、3D装配动画) - autocad-plugin:AutoCAD 家具导出插件源码 - 资产中心改造:编辑弹窗化、删除功能、Toast反馈、自定义Select组件 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2.0 KiB
2.0 KiB
安装顺序编辑器同步与规范收口(2026-02-26)
问题现象
- 装配编辑器切换“安装顺序模式/普通模式”后,步骤编辑器显示状态偶发不同步。
- 右侧安装顺序操作区使用原生按钮,且有硬编码颜色,不符合项目 UI 元组件与设计 token 规范。
根因分析
AssemblyStepEditor内部维护本地steps与selectedStepId,但仅在初次挂载时初始化。- 之前依赖父组件传
key强制重挂载做同步,导致每次步骤变化都触发整体重建,性能与交互稳定性差。 - 安装顺序操作区未统一使用
@/components/ui/Button。
修复方案
- 去除强制重挂载:移除
AssemblyEditorWorkspace中stepEditorSyncKey与key方案。 - 改为受控同步:在
AssemblyStepEditor内新增useEffect监听initialSteps,同步本地步骤、选中项与高亮状态。 - 组件规范收口:安装顺序操作按钮统一改为
Button元组件。 - 视觉规范收口:本轮改动范围内的安装顺序提示色改为语义类(
text-apple-blue/text-apple-red),步骤编辑器局部颜色改为apple-*token。 - 复用元组件:步骤详情中的部件勾选改为
Checkbox元组件。
影响范围
src/app/products/[id]/assembly/AssemblyEditorWorkspace.tsxsrc/components/assembly/AssemblyStepEditor.tsx
验证记录
npm run lint -- src/components/assembly/AssemblyStepEditor.tsx src/app/products/[id]/assembly/AssemblyEditorWorkspace.tsx通过npm run type-check -- --pretty false通过npm test -- tests/lib/install-order-rules.test.ts --runInBand通过(41/41)
复用建议
- 当组件需要“外部数据刷新 + 内部编辑态并存”时,优先使用 受控同步 + 保留选中状态,不要用
key重挂载兜底。 - UI 收口优先检查:原生控件、硬编码颜色、交互状态(disabled/loading)是否已落在元组件能力内。