Ant Design React Form 表单:联动禁用子单选框
你可以使用 antd 的 Form 组件和 Radio 组件来实现这个需求。
首先,你需要定义一个父组件来管理表单数据,并设置父单选框的初始值。然后,使用 Form 组件来包裹父单选框和子单选框,并使用 getFieldDecorator 方法来绑定表单数据。
在父单选框的 onChange 事件中,通过设置父组件的 state 来更新表单数据。根据选中的父单选框的值,你可以使用条件语句来判断是否禁用另一个父单选框的子单选框。
下面是一个示例代码:
import React from 'react';
import { Form, Radio } from 'antd';
class MyForm extends React.Component {
state = {
radio1Value: 'A',
radio2Value: 'A',
};
handleRadio1Change = e => {
const value = e.target.value;
this.setState({
radio1Value: value,
// 如果选中了 A,则禁用 radio2 的子单选框
radio2Value: value === 'A' ? 'A' : this.state.radio2Value,
});
};
handleRadio2Change = e => {
this.setState({
radio2Value: e.target.value,
});
};
render() {
const { getFieldDecorator } = this.props.form;
return (
<Form>
<Form.Item label='父单选框1'>
{getFieldDecorator('radio1', {
initialValue: this.state.radio1Value,
})(<Radio.Group onChange={this.handleRadio1Change}>
<Radio value='A'>选项 A</Radio>
<Radio value='B'>选项 B</Radio>
<Radio value='C'>选项 C</Radio>
</Radio.Group>)} </Form.Item>
<Form.Item label='父单选框2'>
{getFieldDecorator('radio2', {
initialValue: this.state.radio2Value,
})(<Radio.Group onChange={this.handleRadio2Change}>
<Radio value='A' disabled={this.state.radio1Value === 'A'}>选项 A</Radio>
<Radio value='B' disabled={this.state.radio1Value === 'A'}>选项 B</Radio>
<Radio value='C' disabled={this.state.radio1Value === 'A'}>选项 C</Radio>
</Radio.Group>)} </Form.Item>
</Form>
);
}
}
const WrappedMyForm = Form.create()(MyForm);
export default WrappedMyForm;
在上面的示例中,我们使用了 Form.create() 方法来创建一个高阶组件,以便在组件中使用 getFieldDecorator 方法。使用 getFieldDecorator 方法将表单字段与表单数据进行绑定。
父单选框的 onChange 事件中,我们根据选中的值来更新表单数据,并根据条件语句来判断是否禁用子单选框。
注意:在使用 antd 的 Form 组件时,需要使用 getFieldDecorator 方法来绑定表单数据,否则无法获取表单数据的值。
原文地址: https://www.cveoy.top/t/topic/pmkA 著作权归作者所有。请勿转载和采集!