简体   繁体   English

同一页面上的多个react下拉列表为每个下拉列表获取相同的值

[英]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.

相关问题 在 React 中,如何在多个 select 下拉菜单之间更新 state,每个下拉菜单都有相同的选项? - In React, How to update state between multiple select dropdowns , each with same options? 从 React 中的同一个选择下拉表单字段中获取多个值 - Get multiple values from the same select dropdown form field in React 什么是从React中从同一文件导入多个组件的正确方法,而不是导入每个组件 - what is proper way to import multiple components from same file in react instead of getting each component imported 同一页面上的多个 React 应用实例 - Multiple Instances of React Application on the Same Page 如何在同一页面上切换多个反应组件 - How to switch multiple react components on same page 同一页面上的多个反应表实例 - Multiple react-table instances on same page 同一页面上的多个反应应用程序(组件)? - multiple react apps (components) on the same page? 反应同一组件的多个实例正在获得相同的状态 - React multiple instances of same component are getting same state 从react js中的多个选择下拉列表中获取相同的值 - get same value from multiple select dropdown in react js 从多个下拉列表中选择不同的值具有相同的数据 - Select different values from multiple dropdown lists have same data
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM