setState似乎没有更新状态[重复]

问题描述 投票:1回答:1

这个问题在这里已有答案:

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);
}

好的,所以当我点击我的应用程序中的表格单元格时,会调用此函数。

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

表示由于某种原因,用户ID仍为空。有人有类似的问题吗?

javascript reactjs state setstate
1个回答
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()

© www.soinside.com 2019 - 2024. All rights reserved.