2017-03-17 95 views
0

我目前在我的路由器如下:react-native-router-flux:如何在切換選項卡時保留父導航欄?

<Scene key="results" title="Query Results" 
    tabs={true} tabBarStyle={style.tabBarStyle}> 
    <Scene 
     key="listResultsTab" 
     title="List" 
     icon={TabIcon} 
    > 
     <Scene key="listResults" component={ListResultsScene} title="Results List" /> 
    </Scene> 

    <Scene 
     key="mapResultsTab" 
     title="Map" 
     icon={TabIcon} 
    > 
     <Scene key="mapResults" component={MapResultsScene} title="Results Map" /> 
    </Scene> 
</Scene> 

到目前爲止,它創建了兩個標籤的ListResults和MapResults組件之間交替,這是我想要的標籤欄。但是,這些選項卡各自維護着自己的導航欄。這不一定是一個問題,除了它會覆蓋父導航欄,因此我無法訪問查詢結果前的任何內容。

我理想的配置會是這樣的:

launchScreen --> queryResults----->listResults -> ... -> 
        | 
        -->mapResults-> ... -> 

有什麼辦法讓queryResults的導航欄,同時在標籤之間切換?

docs

每個標籤都有自己的導航欄。但是,如果您未將其父級設置爲hideNavBar = {true},則選項卡的導航欄將被其父級覆蓋。

然而這似乎並非如此。我沒有使用hideNavBar,並且父級的導航欄仍然被選項卡覆蓋。我想也許我可以在選項卡上使用hideNavBar,但只能完全刪除navBar。

編輯:更新更詳細的信息。

這是我的完整場景列表。

import React from 'react'; 
import {StyleSheet, Text } from 'react-native'; 
import { Actions, Scene, ActionConst } from 'react-native-router-flux'; 
import LaunchScene from '../scenes/LaunchScene'; 
import LoginScene from '../scenes/LoginScene'; 
import WorkspaceSelectionScene from '../scenes/WorkspaceSelectionScene'; 
import QuerySelectionScene from '../scenes/QuerySelectionScene'; 
import EditQueryScene from '../scenes/EditQueryScene'; 
import ListResultsScene from '../scenes/ListResultsScene'; 
import MapResultsScene from '../scenes/MapResultsScene'; 

const style = StyleSheet.create({ 
     tabBarStyle: { 
      borderTopWidth : .5, 
      borderColor : '#b7b7b7', 
      backgroundColor: 'white', 
      opacity: 1 
     }, 
     padForNavBar: { 
      paddingTop: 64 
     } 
}); 

const TabIcon = ({ selected, title }) => { 
    return (
    <Text style={{color: selected ? 'red' :'black'}}>{title}</Text> 
); 
} 

const scenes = Actions.create(
    <Scene key="root"> 
    <Scene key="login" component={LoginScene} title="Login" sceneStyle={style.padForNavBar} /> 
    <Scene key="workspaceSelection" component={WorkspaceSelectionScene} 
     title="Workspace Selection" sceneStyle={style.padForNavBar} /> 
    <Scene key="querySelection" component={QuerySelectionScene} 
     title="Query Selection" sceneStyle={style.padForNavBar} /> 
    <Scene key="launch" component={LaunchScene} title="Launch" sceneStyle={style.padForNavBar} /> 
    <Scene key="editQuery" component={EditQueryScene} title="Edit Query" sceneStyle={style.padForNavBar} /> 
    <Scene key="results" title="Query Results" 
     tabs={true} tabBarStyle={style.tabBarStyle}> 
     <Scene 
      key="listResultsTab" 
      title="List" 
      icon={TabIcon} 
     > 
      <Scene key="listResults" component={ListResultsScene} title="Results List" sceneStyle={style.padForNavBar} /> 
     </Scene> 

     <Scene 
      key="mapResultsTab" 
      title="Map" 
      icon={TabIcon} 
     > 
      <Scene key="mapResults" component={MapResultsScene} title="Results Map" sceneStyle={style.padForNavBar} /> 
     </Scene> 
    </Scene> 
    </Scene> 
); 

export default scenes 

這就是我的標籤樣子時,我打嵌套結果現場內listResults標籤。請注意,我仍然可以返回到前幾頁。 This is what my tabs look like when I hit the listResults tab nested inside the results scene. Note that I can still return to the previous pages.

但是,當我切換選項卡到mapResults選項卡,仍然在結果場景內,導航欄被重置。我不再有權訪問後退按鈕。切換回listResults不會恢復它。 But when I switch tabs to the mapResults tab, still within the results scene, the navbar is reset. I no longer have access to the back button. Switching back to listResults will not restore it.

+0

您以前的導航欄中的數據會被新的導航欄覆蓋嗎? – Codesingh

+0

是的。當我點擊queryResults時,我可以回到launchScreen。但是,一旦我切換標籤,導航欄將被重置,我不能再移動到launchScreen。 – JCDJulian

+0

如果可能,請分享gif,代碼 – Codesingh

回答

1

作爲一個更新,這竟然是與庫的問題。問題已打開,並在隨後的提交中得到糾正。

0

我有一些東西給你,夥伴,將它添加到你的場景它會阻止你的狀態重置。 type={ActionConst.REFRESH}

這將刷新你的籌碼,或者你可以這樣做:

componentDidMount(){ 
Actions.refresh({backTitle:()=> this.props.title}) 
} 

如果你想從棧中彈出。

乾杯:)

+0

這並沒有解決問題。有關更多詳細信息,請參閱帖子中的修改。 – JCDJulian

相關問題