ReactNative 实现同步更新

163 阅读1分钟

下面这样做有时候会不更新数据

// 监听 picker 的改变
UNSAFE_componentWillReceiveProps(nextProps) {
    if (this.state.lastIllnessTitle !== nextProps.title) {
      this.setState({
        illnessTitle: nextProps.title,
      });
      this.requestData(nextProps.title);  
    }
  }

React文档中对setState的说明

void setState(
    function|object nextState,
    [function callback]
)

第二个参数是一个回调函数,在setState的异步操作结束并且组件已经重新渲染的时候执行。我们可以通过这个回调来拿到更新的state的值。

下面是用法:

this.setState(
      {
        illnessTitle: nextProps.title,
      },
      () => {
         this.requestData();
      }
    );