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>
这是我的阵列,
var Data = response.data;
const map = Data.map((arrElement, index) => ({
label: arrElement,
value: index
}));
例子:
[
{
"label": "Action",
"value": 0
},
{
"label": "Comedy",
"value": 1
},
{
"label": "Documentary",
"value": 2
}
]
错误信息进入这里,
dataChange(ev, action) {
this.setState({
[ev.target.name]: ev.target.value
});
}
使成为()
render() {
return (
<Movie
onPostData={this.postData.bind(this)}
onDataChange={this.dataChange.bind(this)}
/>
);
}
错误
未捕获的类型错误:无法读取 Movies.dataChange 中未定义的属性“名称”
解决方案
您希望react-select
´sonChange
方法中的第一个参数是一个event
对象,但事实并非如此。
第一个参数是选定的选项(或选项,如果您已isMulti
设置)。还有第二个参数,它object
具有以下属性:
action
: 触发变化的动作name
: 使用prop赋予Select
组件的名称。name
因此,如果您想使用name
:
onDataChange={(value, action) => {
this.setState({
[action.name]: value
})
}}
推荐阅读
- python - 从 DateTimeIndex 中截断毫秒
- mysql - SQL INSERT INTO 从一张表插入两张表
- linux - tcpdump 不显示 Wireshark 看到的数据包
- mysql - 从 MYSQL 用户主机中删除附加的网络名称
- javascript - 关闭中的 Javascript 类库
- sql - 获取“复制”值
- docker - docker pull 完成与下载完成的区别
- php - 如何使用 php 将多页 csv 解析为 html 表
- python - 即使令牌有效,Youtube 分析 API 也会返回 403 禁止
- elixir - 将 Enum.filter 与 Enum.each 结合起来