我正在尝试创建具有多个(动态)输入字段的反应形式。输入被分组在一起,如下图所示。
当用户提交表单时,我需要获取从每个组中选择的值。使用map
函数动态生成组。我在这个话题上没有发现太多。
我现有的代码:
<form onSubmit={this.handleSubmit.bind(this)}>
<div className="container">
{this.state.food.options.map((food, i) =>
<div key={i}>
<h5 style={{marginBottom: 2}}><b>{food.name}</b></h5><br />
<div>
{food.options.map((option, k) =>
<div className="row" key={k}>
<div className="col-3" style={{flex: '0 0 10%'}}>
<input type="radio" name={option.name} value={option.id} style={{height: 20}} />
</div>
<div className="col-3">
<span style={{paddingTop: 10, fontSize: 12}}>{option.name}</span>
</div>
</div>
)}
</div>
<hr />
</div>
)}
</div>
</form>
答案 0 :(得分:1)
您必须改为使用checked
属性
然后将onChange
事件用于选择optionID
<input
type="radio"
name={option.name}
value={option.id}
style={{height: 20}}
checked={this.state.optionId[option.name] === option.id}
onChange(this.handleChange)
/>
handleChange = e => {
this.setState({
optionId: e.target.value
});
}