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,
});
}
}
我在标签栏上有两个屏幕(默认反应本机标签栏)。当我尝试导航到 '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,
});
}
}