我在选项卡栏上有两个屏幕(默认情况下是本机选项卡栏)。当我尝试使用堆栈导航器导航到“ 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,
});
}
}
答案 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,
});
}
}