[英]Multiple react dropdowns on the same page are getting the same values for each dropdown
I have a ReactJS component, I am using Redux form, and I am building a wizard. 我有一个ReactJS组件,我正在使用Redux表单,并且正在构建一个向导。 I have some dynamic dropdowns being created in a step and the output looks like the following:
我在一个步骤中创建了一些动态下拉列表,输出如下所示:
<select name="year[0]" class="form-control">
<option value="">Please select</option>
<option value="1980">1980</option>
<option value="1981">1981</option>
<option value="1982">1982</option>
</select>
<select name="year[1]" class="form-control">
<option value="">Please select</option>
<option value="1980">1980</option>
<option value="1981">1981</option>
<option value="1982">1982</option>
</select>
And the code that generates the above is the following: 生成以上代码的代码如下:
_.times(2, (i) => (
<div className="col-md-4">
<Field
name={'year['+i+']'}
component={yearDropdown}
arr={_.values(years)} // years looks like so: years: {'1980': 1980, '1981': 1981}
label="Year"
change={this.onChange}
selectedValue={selectedYear}
/>
</div>
))
The yearDropdown
component that Field
wraps looks like so: Field
包装的yearDropdown
组件如下所示:
const yearDropdown = ({ input, label, arr, change, selectedValue, meta: { touched, error } }) => (
<div className="form-group">
<label>{label}</label>
<select {...input} className="form-control" onChange={change} value={selectedValue}>
<option value="">Please select</option>
{arr.map(val => (
<option value={val} key={val}>
{val}
</option>
))}
</select>
{touched && error && <span style={{color: "red"}}>{error}</span>}
</div>
)
The issue is that when I select 1980
in the first dropdown, the selected value also gets applied to the second dropdown. 问题是,当我在第一个下拉列表中选择
1980
时,所选值也将应用于第二个下拉列表。
My onChange
looks like so: 我的
onChange
看起来像这样:
onChange(e) {
this.setState({[e.target.name]: e.target.value});
}
Am I missing something basic here? 我在这里缺少基本的东西吗? As simple as this would seem, I can't figure it out.
尽管看起来很简单,但我无法弄清楚。
They are controlled fields and by the looks of it you set all of them to share a common selectedValue
property with the selectedValue={selectedYear}
part. 它们是受控字段,从外观上,您将它们设置为与
selectedValue={selectedYear}
部分共享一个公共的selectedValue
属性。
That would probably need to be something like selectedValue={this.state[`year[${i}]`}
那可能需要像
selectedValue={this.state[`year[${i}]`}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.