[英]react-native navigation false route params in navigation listener
我正在使用本機導航並有兩個選項卡。 其中一個有一個實體列表,另一個有一個提交實體的表單。 提交新實體時,我想刷新第一個選項卡以確保加載最新數據。
我像這樣導航到第一個選項卡:
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} )
}
使用navigation.push而不是navigation.navigate
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.