reactjs - componentWillReceiveProps 在第一次调用时没有收到道具反应原生
问题描述
我在标签栏上有两个屏幕(默认反应原生标签栏)。当我尝试导航到“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,
});
}
}
推荐阅读
- javascript - asyc\await 语法是否解析链式函数?
- scala - 如何为边缘添加属性?
- python - 无法使用烧瓶框架从 python 脚本呈现 html 页面中的列表值
- javascript - 使用 Karma 进行单元测试
- powerbi - 高于平均水平的人数
- vue.js - 选择选项后如何使用 element-ui 和 vuejs 触发“选择”的模糊事件?
- php - 如何在高级自定义字段中使用 Wordpress 图像大小
- powerbi-embedded - 在 Power BI Embedded 中筛选数据
- task - 任务参数作为下拉列表
- android - 使用间接 Getter 进行数据绑定 @Bindable