我在标签栏上有两个屏幕(默认的反应本机标签栏(。当我尝试使用堆栈导航器导航到"MapScreen"(选项卡栏的非默认屏幕(时,同时传递一些其他数据,该方法的第一次调用始终默认为"默认",而不是接收传递的"区域"数据。但是,当我返回原始屏幕并重试时,数据传递正常。为什么第一次使用堆栈导航功能时没有正确初始化"区域"?
要打开的屏幕:
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,
});
}
}