2015-12-11 178 views
1

我很難理解導航器組件。 我有一個預設的路線將反應路由導航到導航器

routes: [{ 
    name: 'settings' 
}, { 
    name: 'feed' 
}, { 
    name: 'matches' 
}] 

所以應用程序開始飼料頁面上,然後你可以來回走使用導航欄的3路之間

<Navigator initialRoute={config.routes[1]} 
      initialRouteStack={config.routes} 
      renderScene={this.renderScene}} /> 
[從便於代碼省略]

現在,我要介紹一個新的臨時航線[還挺像的Instagram/Spotify的] 所以對飼料的路線,當你點擊「顯示簡介」它推到堆棧中一個新的途徑。

this.props.nav.push({ 
    name: 'profile', 
    sceneConfig: Navigator.SceneConfigs.FloatFromBottom 
}) 

現在,什麼惱人的是,這完全取代了匹配路線,因爲當我彈出此路線回到飼料。比賽路線已被完全刪除。 我已經看過API,我試過使用替換方法等,但不斷得到時髦的結果。

請參閱下面的GIF以便更好地理解。

這是使用導航儀,具有預置設定路線的正確方法是什麼?我在NavigationBar中使用jumpBack/jumpForward在它們之間移動,但是我無法爲預設路線設置特定的sceneConfigs。我該如何去做呢?例如,如果我想設置路由到FloatFromBottom?

Screenshot

+0

更新:我已經解決了這個問題,通過創建一個反映路徑變化的自定義NavigationBar組件https://github.com/antigirl/ReactNativeGraphRoutes –

回答

0

我認爲這個問題是您正在使用擺在首位的routestack。在我的應用程序中,我將所有場景轉換編碼到邏輯中,並不斷推送和彈出場景到堆棧中。

我認爲使用initialRouteStack可能不足以爲你的用例。閱讀http://devdocs.io/react_native/navigator

推(路線) - 向前導航到一個新的場景,擠壓你可以jumpForward到

所以你看,當你使用push你破壞了第三場景中的任何場景。嘗試重新構建您的應用程序,無需預先確定場景即可推送和彈出。

您也可以嘗試添加配置文件路徑爲那些之間的第4個場景和過渡。

+0

感謝您的回覆,如果您以我的用例爲例,如果您流行音樂比賽和推送模式,你會發現很多不一致的,不僅在過渡,但在導航欄中太 ALSO大跌眼鏡的場面未坐騎他們好像真的不好UX不保持在以前的場景的用戶行爲。在狀態下管理它們也是太多的開銷。 考慮Instagram和Spotify,在1個場景中滾動並轉到下一個並回到它,您的滾動位置和任何交互將被保留。除非你離開主要路線。 –

+0

你的應用程序路線不是線性堆棧。這是一張圖。將它添加爲第四條路線並在它們之間轉換是否有效?即使您沒有混合應用程序,您的個人資料路徑聽起來也很適合[模式](http://devdocs.io/react_native/modal)。模態不會影響你的路線堆棧。 –

+0

感謝Harry,它不是線性路線,導航器內的轉換不起作用。我現在通過製作自己的navigatorBar組件解決了這個問題。如果有人有興趣 https://github.com/antigirl/ReactNativeGraphRoutes –