事情是这样的,项目中遇到了一个问题,用表单包裹着着一个Switch组件,提交表单的时候可以将Switch的值一起提交。
form.setFieldsValue({power:0})
<Form.Item label="Switch" name="power">
<Switch checked={flag}/>
</Form.Item>
这个开关其实是根据checked
属性来表示开或者关的。当时想要的效果是开着的,但是效果出来都是关着的,我本来以为flag
取值有问题,于是把checked
属性直接复制为true
,但是依然没有生效。。。
google了很久为什么Switch组件的checked
属性不生效,结果都没有找到答案。。
真凶其实是formItem
的name
属性。。Form.Item
设置 name
后,组件受 Form 管理值。而在代码前文有一个将form
中的power
这个Item
设置为0 的操作,因此FormItem
里的Switch
就不会生效了。。
相同的,如果formItem
设置了name
属性里放了Input
,input
里的数据也会被formItem 给覆盖掉。
具体可以看官网案例