【发布时间】:2018-04-14 16:48:29
【问题描述】:
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 由于某种原因仍然为空。有人遇到过类似的问题吗?
【问题讨论】:
-
setState 是一个异步操作,它不会立即更新组件的状态
-
你考虑过reading the documentation 吗? “
setState()并不总是立即更新组件。它可能会批量更新或推迟更新。这使得在调用setState()之后立即读取this.state是一个潜在的陷阱。” -
你不应该像上面那样改变状态:
const state = this.state; this.state['userId'] = clickEvent.target.getAttribute(user['mta:UserId']);在这里阅读:reactjs.org/docs/…
标签: javascript reactjs state setstate