react-native-router-flux:如何在切换选项卡时保留父导航栏?

react-native-router-flux:如何在切换选项卡时保留父导航栏?

问题描述:

我目前在我的路由器如下: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

作为一个更新,这竟然是与库的问题。问题已打开,并在随后的提交中得到纠正。

我有一些东西给你,伙伴,将它添加到你的场景它会阻止你的状态重置。 type={ActionConst.REFRESH}

这将刷新你的筹码,或者你可以这样做:

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

如果你想从栈中弹出。

干杯:)

+0

这并没有解决问题。有关更多详细信息,请参阅帖子中的修改。 – JCDJulian