antd v4 版本中 Form.Item 子组件 value 不生效问题
背景
在 Form.Item 中使用 Input 输入框设置 value 时发现其不生效,查看使用文档也没有发现问题
猜测
Form.Item 对子组件的 value 属性做了劫持,导致手动设置的 value 被覆盖
代码验证
- 通过查找
return语句,发现执行了renderLayout这个方法 - 查看
renderLayout的具体实现子组件实际渲染的是方法的实际参数baseChildren - 查看
renderLayout的调用发现在!hasName && !isRenderProps && !dependencies才会直接渲染子组件,其它情况会注入value等属性
1 | // 先执行 |
修复
去除 Form.Item 中的 name 属性,验证 value 属性生效