- 当组件处于批处理阶段,setState 将不会马上更新 state,这种情况下,想要执行完 setState 后,依赖 state 进行后续的 setState 是会有问题的;
- 对上述问题,有两个处理办法:
a. 调用 setState 时与值一并传入一个回调,该回调在 setState 执行完成时将被执行,可在其中依赖 this.state 获得有效的新值:
this.setState({money: 10000}, () => {
this.setState({
money: this.state.money * 2
});
});
b. 调用 setState 时传入算值函数,该函数在对 state 设值时执行,并带有 previousState, currentProps 参数,可作为算值依据:
this.setState({money: 10000});
this.setState(function(previousState, currentProps) {
return {money: previousState * 2};
});