javascript - 可以从reactjs中的事件处理函数访问选项标签元素的键吗?

标签 javascript reactjs react-bootstrap

我有一个非常具体和奇怪的情况。

我有足够大的对象数组,用于存储需要从选择框中选择的所有对象。

像这样排序:

var optionsArray = [
   {
      name: option1,
      code: f2X
   },

   {
      name: option2,
      code: x21
   },
   ...
   {
      name: option100,
      code: Rga
   },

]

重点是,code 属性与选项名称没有任何关系。

我目前将其放在选择框中,选择该选项后,我需要返回该选项的代码。以下是选择框甚至处理程序当前的样子:

class SelectForm extends Component{
    onChange(e){
       console.log ("option selected", e.target.name);
       //I can access the name, but what I want to access is the the code
    }

    render(){
        var _this = this;

        return (
            <FormGroup controlId="myId">
                <FormControl componentClass="select" onChange={this.onChange}>
                    {
                      optionsArray.map(function(value, key) {
                      return <option key={key}>{value.name}</option>
                      })
                    }
                </FormControl>
                </FormGroup>
        );
    }

所以基本上在事件处理程序中我想访问代码而不是我刚刚选择的选项的名称。

我想也许我可以访问我从键中选择的数组的索引,并执行如下操作:

onChange(e){
   console.log ("selected option code", optionsArray[e.target.key].code);
}

但是键未定义。有什么方法可以访问事件中所选选项的 key 吗?或者更好的是,有没有一种方法可以将代码包含在选项标记中,以便以后可以在事件处理程序中轻松访问它?

最佳答案

您需要在 option 中传递 value 属性,该属性将包含代码值。所以它会是这样的

<FormControl componentClass="select" onChange={this.onChange}>
  {
     optionsArray.map(function(value, key) {
         return <option key={key} value={value.code}>{value.name}</option>
     })
  }
</FormControl>

并像 onChange 函数中的 e.target.value 一样访问它。

onChange(e){
   console.log ("option selected", e.target.value);
}

关于javascript - 可以从reactjs中的事件处理函数访问选项标签元素的键吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42180130/

相关文章:

javascript - react index.html 呈现但 react 组件不

reactjs - 如何使用 React 改变 Web 应用程序的配色方案?

javascript - 如何在React Bootstrap中更改 Accordion 折叠方向?

javascript - JQuery .load() 方法在 Google Chrome 浏览器中不起作用

javascript - 下一个 Js 错误 : Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined

javascript - 如何检查 iframe 是否已加载或是否包含内容?

javascript - 箭头函数在 .map 中的 prop 中传递变量

reactjs - 导航栏组件不显示 react-bootstrap CSS

javascript - jQuery 中的 resize.instanceId 事件

javascript - Angular 2 - 通过输入将对象传递给组件