使用 {react-select} 时无法读取未定义的属性“名称”

Blo*_*oss 1 reactjs react-select

我很开始reactJS和前端

我为我的下拉菜单添加了 react-select npm,如下所示,在添加 react-select 之前,一切正常。如何在Select中定义名称?

<div className="container">
            <div className="row">
              <div className="col-md-4" />
              <div className="col-md-4">
                <Select
                  options={this.state.allGenres}
                  onChange={this.props.onDataChange}
                  name="genre"
                />
              </div>
              <div className="col-md-4" />
            </div>
          </div>
Run Code Online (Sandbox Code Playgroud)

这是我的数组,

 var Data = response.data;
    const map = Data.map((arrElement, index) => ({
      label: arrElement,
      value: index
    }));
Run Code Online (Sandbox Code Playgroud)

例子:

[
    {
        "label": "Action",
        "value": 0
    },
    {
        "label": "Comedy",
        "value": 1
    },
    {
        "label": "Documentary",
        "value": 2
    }
]
Run Code Online (Sandbox Code Playgroud)

错误信息进来这里,

   dataChange(ev, action) {
    this.setState({
      [ev.target.name]: ev.target.value
    });
  }
Run Code Online (Sandbox Code Playgroud)

使成为()

 render() {
    return (
      <Movie
        onPostData={this.postData.bind(this)}
        onDataChange={this.dataChange.bind(this)}
      />
    );
  }
Run Code Online (Sandbox Code Playgroud)

错误

未捕获的类型错误:无法读取 Movies.dataChange 中未定义的属性“名称”

Ral*_*len 6

您希望react-select´sonChange方法中的第一个参数是一个event对象,但它不是。

第一个参数是选定的选项(或选项,如果您已isMulti设置)。还有一个object具有以下属性的第二个参数:

  • action: 触发变化的动作
  • name:Select使用nameprop为组件指定的名称。

因此,如果您想使用name

onDataChange={(value, action) => {
    this.setState({
        [action.name]: value
    })
}}
Run Code Online (Sandbox Code Playgroud)

源代码中的参考