antd3.x 多表单联动
时间: 2023-08-18 11:08:36 浏览: 325
对于 antd 3.x 版本的多表单联动,你可以使用 `Form.create()` 方法结合 `getFieldDecorator` 和 `setFieldsValue` 方法来实现。
首先,你需要定义多个表单字段,并使用 `getFieldDecorator` 方法对每个字段进行包装,以便获取表单的值和进行校验。然后,你可以使用 `setFieldsValue` 方法来动态更新其他表单字段的值。
以下是一个示例代码,演示了如何实现两个表单字段之间的联动:
```jsx
import React from 'react';
import { Form, Input } from 'antd';
class MyForm extends React.Component {
componentDidMount() {
const { form } = this.props;
form.setFieldsValue({ // 设置初始值
field1: '',
field2: '',
});
}
handleField1Change = (e) => {
const { form } = this.props;
const field1Value = e.target.value;
// 更新 field2 的值
form.setFieldsValue({
field2: field1Value,
});
}
render() {
const { getFieldDecorator } = this.props.form;
return (
<Form>
<Form.Item>
{getFieldDecorator('field1', {
rules: [{ required: true, message: 'Field 1 is required' }],
})(
<Input placeholder="Field 1" onChange={this.handleField1Change} />
)}
</Form.Item>
<Form.Item>
{getFieldDecorator('field2', {
rules: [{ required: true, message: 'Field 2 is required' }],
})(
<Input placeholder="Field 2" disabled />
)}
</Form.Item>
</Form>
);
}
}
export default Form.create()(MyForm);
```
在上面的示例代码中,我们定义了两个表单字段 `field1` 和 `field2`。当 `field1` 的值发生变化时,我们通过调用 `form.setFieldsValue` 方法来更新 `field2` 的值。在 `field2` 的 `getFieldDecorator` 中设置了 `disabled` 属性,以禁用该表单字段的输入。
你可以根据需要进行扩展和修改,实现更复杂的多表单联动效果。希望能帮到你!如果有其他问题,请随时提问。
阅读全文