我使用的是react本机导航,有两个选项卡。其中一个有实体列表,另一个有提交实体的表单。当提交新实体时,我想刷新第一个选项卡,以确保加载了最新的数据。
我导航到第一个选项卡,如下所示:
navigation?.navigate('Main', {refresh: true});
此道具保存如下:
let {refresh} = route.params;
为了检查,如果屏幕需要刷新,我在useEffect((中添加了一个监听器,如下所示:
useEffect(() => {
const unsubscribe = navigation.addListener('focus', () =>{
if(refresh){
doRefresh()
}
})
}, [])
不幸的是;刷新";也不是";route.params";在听众的内心深处,直接是真实的。传递param是有效的,因为我仔细查看了var,无论何时提交,它都会变为true。
我需要用另一种方式访问导航侦听器中的route.params吗?
谢谢,如果你需要更多关于的信息,请联系我
问题是,由于依赖项数组[]
为空,所以useEffect
只运行一次,因此侦听器只接收refresh
的初始值
您需要将refresh
作为依赖项传递给useEffect
,我认为在您的情况下甚至不需要focus
侦听器,因此您最终会得到以下结果:
useEffect(() => {
if (refresh) {
doRefresh()
}
}, [refresh])
const onPressCountry = (item,index) => {
navigation.push('SignUp2', {selectedCountryId:item?.countryID, selectedCountryName: item?.name} )
}
使用导航。推送而不是浏览。浏览