在导航侦听器中反应本地导航错误路由参数



我使用的是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} )
}

使用导航。推送而不是浏览。浏览

最新更新