[React Native] 关于 setState

717 查看

  1. 当组件处于批处理阶段,setState 将不会马上更新 state,这种情况下,想要执行完 setState 后,依赖 state 进行后续的 setState 是会有问题的;
  2. 对上述问题,有两个处理办法:
    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};
    });