setState似乎没有更新状态

时间:2017-11-02 08:24:02

标签: javascript reactjs state setstate

onSelectedRow(user, clickEvent){
     const state = this.state;
    this.state['userId'] = clickEvent.target.getAttribute(user['mta:UserId']);
    this.setState(state);
    console.log(user['mta:UserId']);
    console.log(this.state);
}

好的,所以当我在我的应用中点击 table-cell 时,会调用此函数。

关键是要取用户UserId并设置状态。此UserId稍后在 传递给子组件 并用于获取特定信息。问题是我在第一个console.log中获取了正确的数据,但是当我记录它时。

表示userId由于某种原因仍为空。任何人都有类似的问题吗?

1 个答案:

答案 0 :(得分:1)

这很可能是因为您没有更新const state,而是试图改变状态本身。 此外,您不必复制州。您可以像这样更新要更新的字段:

onSelectedRow(user, clickEvent) {
    this.setState({
        userId: clickEvent.target.getAttribute(user['mta:UserId'])
    }, () => { console.log(this.state.userId) });
    console.log(user['mta:UserId']);
}

此外,您的console.log不会立即读取状态更改,因为setState是异步操作。

如果你真的想要阅读它,你可以将回调传递给setState,在状态更新后立即填充火,或者使用React的生命周期方法componentDidUpdate()