最近迭代一个原本就很成熟的的 react 项目, 他用到 ant3
下面讲下 我的报错场景 :
需求 需要一个 开关, 这个开关 会根据当前项目的id , 展示 它 一开始 是否开启或者关闭的状态.
也就是说 我这个 Switch 要根据 后台返回的字段 回显状态
问题就是 : 有字段 并且也是 Boolean , 但 回显不了 !!!
上原代码:
<Form.Item key='isEnable' label='是否启用'>
{getFieldDecorator('isEnable', {
initialValue: listData?.enable,
})(<Switch checkedChildren="开" unCheckedChildren="关" />)}
</Form.Item>
原代码效果图:
网上查了下 ,说 defaultChecked 可控制回显, 看实验版如下 :
<Form.Item key='isEnable' label='是否启用'>
{getFieldDecorator('isEnable', {
initialValue: listData?.enable,
})(<Switch defaultChecked={listData?.enable}
checkedChildren="开" unCheckedChildren="关" />)}
</Form.Item>
终极解决: 用到 valuePropName 文档说 ,它是显示状态的.
<Form.Item key='isEnable' label='是否启用'>
{getFieldDecorator('isEnable', {
initialValue: listData?.enable,
valuePropName: 'checked'
})(<Switch checkedChildren="开" unCheckedChildren="关" />)}
</Form.Item>
此时完美解决!
注意 : valuePropName 和 defaultChecked 不能同时用 !!
看报错图:
好 , 到此结束 ,希望能帮助到你 !