我正在尝试使用setState更改状态,然后使用新状态调用操作,但React会在设置新状态之前调度操作。我如何等待新状态然后发送动作?
addressInput = e => {
this.setState({
address: e.target.value
});
this.props.filterSearch(this.state.address) //this will be called before state is set
}
答案 0 :(得分:3)
this.setState
提供回调作为第二个参数,在发生状态更改后调用该参数。您应该按如下方式使用回调
addressInput = e => {
this.setState({
address: e.target.value
},
this.props.filterSearch(this.state.address));
}
来自docs:
setState()并不总是立即更新组件。它可以批量推迟更新或推迟更新。这使得在调用setState()之后立即读取this.state是一个潜在的陷阱。相反,使用componentDidUpdate或setState回调(setState(更新程序,回调)),其中任何一个都保证在应用更新后触发。