详情

首页手游攻略 Atoms代码生成后修改表单组件如何覆盖源码

Atoms代码生成后修改表单组件如何覆盖源码

佚名 2026-08-21 20:19:55

必须移除// @generated-by-smart-form-builder注释并禁用autoGenerate或采用继承式覆盖,否则手动修改将被生成器静默覆写;操作前需停监听、删原文件、强制git添加。

在使用原子设计(Atomic Design)构建的表单组件库中,当通过代码生成器(如 smart-form-builder 或类似低代码工具)产出 Atoms 层级的源码后,若需手动修改并覆盖原始生成文件,必须绕过自动生成逻辑直接操作物理文件,否则下次生成会无条件覆写你的变更。

确认生成器是否支持增量更新或保留自定义区

打开项目根目录下的配置文件(如 form.config.jsonsmart-form-builder.config.js),查找 preserveCustomCodekeepManualChangescustomSections 字段。若存在且值为 【true】,说明该生成器已预留钩子;若字段不存在或为 false,则默认每次生成都会全量覆盖。

这一步跳过将导致后续所有手动修改被静默清除,且无 Git 差异提示。

定位并锁定 Atoms 组件源码路径

进入 src/components/atoms/ 目录(或你项目中实际存放原子组件的路径),找到对应表单控件的文件,例如 TextInput.tsxCheckboxAtom.tsx

检查文件顶部是否有生成器插入的特殊注释标记,如 // @generated-by-smart-form-builder v2.4.0。有此标记的文件属于“受管文件”,修改前必须先移除该行——否则生成器识别到标记仍会强制覆盖。

覆盖源码的两种安全方式

方法一:直接编辑 + 禁用对应组件的自动再生

在配置文件中将该组件的 autoGenerate 设为 【false】,例如:

{"components": {"TextInput": {"autoGenerate": false}}}

保存后重新运行生成命令,该组件将被跳过,你的本地修改得以保留。

方法二:继承式覆盖(推荐用于需保留基础行为的场景)

不修改原始 TextInput.tsx,而是新建 src/components/atoms/CustomTextInput.tsx,内部用 import { TextInput } from './TextInput'; 引入原组件,再通过 props 扩展或包装逻辑。最后在业务中统一引用 CustomTextInput

注意:此方式无需触碰生成器配置,但要求团队所有开发人员明确知晓并遵守新引用路径,否则容易出现双版本混用。

执行覆盖操作

第一步:关闭正在运行的生成器监听进程(如 npm run watch:forms

第二步:删除目标组件文件(如 TextInput.tsx

第三步:将你修改后的完整文件(含新逻辑、类型定义、JSDoc 注释)复制粘贴到原路径,文件名与原文件完全一致

第四步:执行 git add -f src/components/atoms/TextInput.tsx 强制加入暂存区——因为该文件可能被 .gitignore 中的生成器规则忽略

第五步:提交并推送,确保 CI 流程中不会因缺失文件触发构建失败

相关资讯
点击查看更多
游戏推荐
推荐专题
热门阅读
推荐下载