答案 0 :(得分:0)
您需要使用immutable helpers或创建这样的新对象:
this.setState(Object.assign({}, this.state, newState))
<强> UPD:强> 尝试做这样的事情:
handleSelectChange(e) {
const data = Object.assign({}, this.state.data)
data[e.target.name] = e.target.value;
for (var i = 0; i < data[e.target.name].length; i++) {
if (data[e.target.name][i].id == e.target.value) {
data[e.target.name] = data[e.target.name][i];
}
}
this.setState({ data });
}
答案 1 :(得分:0)
尝试并使用for循环中定义的handleSelectChange()
来实现setState()
。由于您要设置状态数据值,因此无法像this.state.data[e.target.name] = this.state[e.target.name][i];
那样使用setState()
handleSelectChange(e) {
this.state.data[e.target.name] = e.target.value;
var self = this;
for (var i = 0; i < this.state[e.target.name].length; i++) {
if (this.state[e.target.name][i].id == e.target.value) {
self.setState({data: {[e.target.name]: this.state[e.target.name][i]}});
}
self.setState({data: self.state.data});
}
}