componentWillReceiveProps 在第一次调用时没有收到道具反应本机

componentWillReceiveProps not receiving props on first call react native

我在标签栏上有两个屏幕(默认反应本机标签栏)。当我尝试导航到 'MapScreen'(标签栏的非默认屏幕)时,在传递一些额外数据时使用堆栈导航器,该方法的第一次调用总是默认为 'default' 而不是接收'region' 数据通过。但是,当我返回原始屏幕并重试时,数据正常通过。为什么我第一次使用堆栈导航功能时 'region' 没有正确初始化?

要打开的屏幕:

moveToMapScreen = (lat: number, lon: number) => {
    this.props.navigation.navigate('MapScreen', {
      region: {
        latitude: lat,
        longitude: lon,
        latitudeDelta: 0.00001,
        longitudeDelta: 0.00001,
      },
    });
  }

地图屏幕:

  componentWillReceiveProps() {
    const preRegion = this.props.navigation.getParam('region', 'default');
    if (preRegion !== 'default') {
      this.setState({
        region: preRegion,
      });
    }
  }

您没有将 nextProps 传递给 componentWillReceiveProps ,您的代码应该如下所示:

componentWillReceiveProps(nextProps) {
    // use nextProps inside however you want
    const preRegion = this.props.navigation.getParam('region', 'default');
    if (preRegion !== 'default') {
      this.setState({
        region: preRegion,
      });
    }
  }