【发布时间】:2019-07-11 07:44:58
【问题描述】:
我想管理多个输入字段的“禁用”属性。我创建了一个大型表单(超过 30 个输入),其中几个只有在选中前一个复选框时才可用。
我当前的设置类似于下面的示例。在此示例中,如果选择了“newsletter”,您只能选择“special_offers”。
class Form extends React.Component {
state={
newsletter: false,
specialOffers: false,
disabled:true,
}
handleChangeCheck = name => e => {
this.setState({
[name]: e.target.checked
});
if (name === 'newsletter') {
this.checkNewsletterValue()
}
};
checkNewsletterValue() {
if(this.state.newsletter === true){
this.setState( {disabled: !this.state.disabled} )
}
}
render() {
return(
<div>
<Checkbox name="newsletter" value={this.state.newsletter}
onChange={handleChangeCheck('newsletter')}>Sign up for news letter
</Checkbox>
<Checkbox name="special_offers" value={this.state.specialOffers}
onChange={handleChangeCheck('specialOffers')} disabled =
{this.state.disabled}>
Sign up special offers
</Checkbox>
</div>
);
}
};
我的问题是,如果我需要创建一个新状态来更改依赖于先前选择的每个输入字段的“禁用”属性,我最终会得到一个更大的状态。
有没有办法创建一个通用的解决方案来处理我的输入字段的所有“禁用”值?
【问题讨论】:
-
您必须创建一个具有父子关系的对象数组
标签: reactjs forms input-field