簡體   English   中英

react-native 導航偵聽器中的導航錯誤路由參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM