refactor(BindContactModal): 绑定联系方式弹窗目录化拆分(180→119行, -34%) #1183
Reference in New Issue
Block a user
Delete Branch "refactor/bind-contact-modal-split"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
变更内容
将
BindContactModal.tsx(180行)目录化拆分,降低单文件复杂度:拆分结构
改动说明
useCountdownHook,封装倒计时逻辑,可复用于其他验证码场景useBindContactFormHook,封装表单状态、验证码发送、提交绑定业务逻辑@/components/auth/BindContactModal仍可直接 import 默认导出src/test/components/auth/BindContactModal.test.tsxsmoke 测试🚀 预览环境已部署
代码审查结果 - PR #1183
⚠️ 问题(1个需要修改)
form.validateFields()在未指定字段名时,会校验表单内所有字段。由于表单中同时存在email_code和phone_code,且这两个字段都设置了required: true规则,当用户在“手机号”标签页提交时,校验会失败,因为隐藏的“邮箱验证码”字段为空,反之亦然。await form.validateFields([activeTab, activeTab + '_code'])。💡 建议(1个可选)
useEffect依赖项包含countdown,导致每次倒计时数值变化(每秒)都会清除并重新创建setInterval。useRef存储剩余时间或调整依赖逻辑,确保定时器仅在开始和结束时创建/销毁。✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能
🤖 由 AI 代码审查机器人自动生成 | 2026-07-30 02:44:56 | 模型:
🗑️ 预览环境已清理
PR #1183 已关闭或合并,对应的预览环境已被清理。