【问题标题】:Hiding Bottom tabs in a certain screens在某些屏幕中隐藏底部选项卡
【发布时间】:2019-11-28 11:24:32
【问题描述】:

我使用从“react-navigation-tabs”导入的底部标签导航器

import { createBottomTabNavigator } from 'react-navigation-tabs';

const AppNavigator = createBottomTabNavigator({
  Homepage: {
    screen: Screen1
  },
  Screen2: {
    screen: Screen2
  }
} , {
  initialRouteName:"Screen1"
});

屏幕 1 是堆栈导航器

const AppNavigator = createStackNavigator({
    Homepage: {
      screen: Screen1,
    },
    Screen2: {
        screen: Screen2
    }
} , {
    initialRouteName : "Homepage",
    headerMode:"none",
    navigationOptions: ({ navigation }) => ({
        tabBarVisible: navigation.state.routes[navigation.state.index].routeName === 'Screen2' ? false : true
    })
});

经过一番研究,我找到了以下解决方案,但不起作用

navigationOptions: ({ navigation }) => ({
        tabBarVisible: navigation.state.routes[navigation.state.index].routeName === 'Screen2' ? false : true
    })

这是一个坏消息,因为即使将其隐藏在所有屏幕上,下面的代码也不起作用

navigationOptions: ({ navigation }) => ({
        tabBarVisible: false
    })

标签始终可见,经过大量研究和尝试数十种解决方案

【问题讨论】:

标签: reactjs react-native react-navigation react-native-tabnavigator


【解决方案1】:

试试这个:

Screen1.navigationOptions = ({ navigation }) => {

    let tabBarVisible = true;

    let routeName = navigation.state.routes[navigation.state.index].routeName

    if ( routeName == 'ScreenX' ) {
        tabBarVisible = false
    }

    return {
        tabBarVisible,
    }
}

【讨论】:

  • ljaz ,它被隐藏了,但是 Screen1 是一个堆栈导航器,可以容纳许多屏幕(ScreenX 和 ScreenZ),例如,我想在这个堆栈导航器中从 ScreenX 隐藏它,你明白吗?
  • 我已经编辑了我的答案,请在创建堆栈导航器后尝试。
  • ljaz ,但底部标签导航器是父级,堆栈导航器是它的子级
  • 一样,它仍然存在
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-01
  • 1970-01-01
  • 2020-12-12
  • 1970-01-01
  • 1970-01-01
  • 2016-09-17
相关资源
最近更新 更多