未定义变量,范围问题

时间:2019-06-05 15:25:35

标签: javascript reactjs

我正在尝试使用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)}

调用onChange

1 个答案:

答案 0 :(得分:1)

handleChange = (itemInput, itemNum = null) => event => {
    this.setState({
        rows: update(this.state.rows, {
            [itemNum]: {[itemInput]: {$set: event.target.value}},
        })
    });
};