componentWillReceiveProps在第一次调用时不接收道具

时间:2018-08-24 06:02:07

标签: reactjs react-native navigation lifecycle stack-navigator

我在选项卡栏上有两个屏幕(默认情况下是本机选项卡栏)。当我尝试使用堆栈导航器导航到“ MapScreen”(选项卡栏的非默认屏幕)时,同时传递一些其他数据时,该方法的第一次调用始终默认为“默认”,而不是接收“区域”数据传递。但是,当我返回到原始屏幕并重试时,数据可以很好地传递。为什么第一次使用堆栈导航功能时未正确初始化“区域”?

要打开的屏幕:

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

MapScreen:

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

1 个答案:

答案 0 :(得分:1)

您没有将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,
      });
    }
  }