2017-08-03 48 views
1

我正在爲我希望是一個簡單問題而苦苦掙扎。我有多個StackNavigators,每個都有不同的屏幕,除了.navigate,我還使用Drawer在主棧之間移動。就像這樣:goBack()到使用React導航的上一個/不同堆棧

  • 主堆棧
    • 主屏幕(項)
    • 會員資料
  • 收件箱堆疊
    • 收件箱界面
    • 消息詳細信息屏幕

在消息詳情屏幕上,用戶可以導航到配置文件。所以消息詳情>個人資料。這很好,就像它在整個應用程序中一樣。在同一個堆棧中的導航在向前和向後都很有效。我正在使用標準的導航進行前進。

this.props.navigation.navigate('MemberProfilePage') 

但是,如果我點擊後退按鈕 - 或設置自定義後退按鈕 - 用戶將一路返回到主屏幕。如果我點擊抽屜中的收件箱,屏幕仍然會顯示在消息詳細信息中。

但我真的只想去:消息詳細信息>配置文件...配置文件goBack()到消息詳細信息。

我嘗試了默認的GoBack(),我試過派遣這樣的回動作:

const backAction = NavigationActions.back({ 
    key: 'ProfileScreen' 
}) 

const backAction = NavigationActions.back({ 
    key: null 
}) 

感謝您的任何方向。

編輯:有關在抽屜中設置backButton的初始建議似乎可行。但它不能解決問題。

我不想被帶回當前堆棧的初始屏幕。我想回到我從不同的Stack中導航的屏幕。

+0

您的應用程序層次結構可能存在問題。也許最好有1個Stack而不是2個,只需從任何你需要的屏幕導航到你需要的任何屏幕,並通過'後退'按鈕獲得你需要的任何屏幕。 – Eduard

+0

順便說一下,這種行爲是React-Navigation方面的一個錯誤。從4月......(或類似的事情)開始,他們一直在努力。 – Eduard

回答

1

在你DrawerNavigatorConfig改變這個道具

backBehavior='none' //default is initialRoute 

backBehavior - 應該後退按鈕開關引起的初始 路線?如果是,則設置爲initialRoute,否則。默認爲 initialRoute行爲。

https://reactnavigation.org/docs/navigators/drawer#DrawerNavigatorConfig

檢查,如果它的工作...

+0

該道具使用默認的初始路由,你是對的。但將其改爲「無」沒有任何影響。同樣的經歷正在發生。 –

+0

在我的應用程序中還有另一個地方,我試圖回到之前在不同的Stack中的屏幕。在這種情況下,它不會轉到initialRoute,而是轉到同一個堆棧中的初始屏幕。基本上,它只是關閉屏幕,而不是返回到從其導航的屏幕(在不同的堆棧中),它將轉到其自己堆棧中的初始屏幕。 –