我正在开发一个使用Antd的管理门户网站,这是我在设计中需要的东西。
我设法使用以下代码开发了这个设计
<Form
labelWrap
wrapperCol={{ span: 24 }}
initialValues={detail && detail.object}
onFinish={handleEdit}>
<Row gutter={100}>
<Col span={12}>
<Item
labelCol={{ span: 7 }}
label='Status'
name='status'
valuePropName='checked'
required>
<Space> //-----------#1
<p className='text-green'>Active</p> //--------#2
<Switch defaultChecked={detail && detail.object.status} />
<p className='text-red'>Inactive</p> //------------#3
</Space> //---------#4
</Item>
</Col>
</Row>
</Form>
但是当我尝试处理submit函数时,我没有得到switch元素的值,而是以undefined
的形式出现。
const handleEdit = async (values) => {
console.log(values);
};
但是,当Switch
组件是Item
的直接子组件时,我通过删除注解行#1、#2、#3、#4正确地获得了状态值。
我尝试使用form.getFieldsValue()
方法,但也没有用。
有没有什么方法可以让我以期望的方式得到这个值?
1条答案
按热度按时间mzmfm0qo1#
当您将
name
属性传递给Form.Item
时,Form.Item
的第一个子代将由Form.Item
控制。由于Switch
不是Form.Item
的第一个子代,因此它不受Form.Item
控制,并且您不会获得值status
。有两种可能的解决方案:解决方案1:使用Form.Item和
noStyle
prop进行布局设计(可以按照此示例复杂表单控件)解决方案2:创建一个自定义组件来接收
value
和onChange
属性。示例