这个问题在这里已有答案:
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仍为空。有人有类似的问题吗?
这很可能是因为你没有更新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()
。