setState 似乎没有更新状态
setState doesnt seem to update the state
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 仍然为空。有人遇到过类似的问题吗?
这很可能是因为您没有更新 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()
.
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 仍然为空。有人遇到过类似的问题吗?
这很可能是因为您没有更新 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()
.