注意: 此查询适用于 react-navigation 5。
在反应导航 4 中,我们可以在导航时将函数作为参数传递,但在反应导航 5 中,它会引发有关序列化参数的警告。
基本上,我想做的是,从父屏幕导航到子屏幕,获取新值并更新父屏幕的状态。
以下是我目前正在实施的方式:
父屏幕
_onSelectCountry = (data) => {
this.setState(data);
};
.
.
.
<TouchableOpacity
style={ styles.countrySelector }
activeOpacity={ 0.7 }
onPress={ () => Navigation.navigate("CountrySelect",
{
onSelect: this._onSelectCountry,
countryCode: this.state.country_code,
})
}
>
.
.
.
</TouchableOpacity>
子屏幕
_onPress = (country, country_code, calling_code) => {
const { navigation, route } = this.props;
navigation.goBack();
route.params.onSelect({
country_name: country,
country_code: country_code,
calling_code: calling_code
});
};
原文由 Ayan 发布,翻译遵循 CC BY-SA 4.0 许可协议
除了在参数中传递
onSelect
函数,您可以使用navigate
将数据传递回前一个屏幕:然后,您可以在第一个屏幕中处理此问题(在
componentDidUpdate
或useEffect
中):