我正在尝试使用Immutability Helpers更新React中数组中对象的状态。
handleChange = (itemInput, itemNum = null) => event => {
this.setState({
rows: update(this.state.rows, {
itemNum: {[itemInput]: {$set: event.target.value}},
})
});
}
我收到一个错误“未捕获的TypeError:无法读取未定义的属性'update'”。原因是itemNum是未定义的,我不知道为什么(我知道它是未定义的,因为如果我将其替换为1,则代码可以正常工作。 这可能是一个范围问题:/感谢您提供有关解决此问题的建议!
仅说明变量已定义,我可以在this.setState
之前进行console.log记录。
update
来自https://reactjs.org/docs/update.html。我使用了“嵌套的收藏”下的示例,其中它们已经硬编码了值2,在我的情况下,它必须是itemNum
基本上,我想做的是
this.state.rows[itemNum][itemInput] = event.target.value
但是我想React使我有点复杂...
在构造函数中,我有
this.handleChange = this.handleChange.bind(this);
然后我用onChange={this.handleChange("searchType", i)}
答案 0 :(得分:1)
handleChange = (itemInput, itemNum = null) => event => {
this.setState({
rows: update(this.state.rows, {
[itemNum]: {[itemInput]: {$set: event.target.value}},
})
});
};