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由于某种原因仍为空。任何人都有类似的问题吗?
答案 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()
。