美文网首页
react-navigation在子路由中隐藏createBot

react-navigation在子路由中隐藏createBot

作者: __笑我一世沉沦丶 | 来源:发表于2019-04-19 09:04 被阅读0次

解决方案

      在百度上找了很多相关所谓的解决方案,并没有将问题解决,反而会让代码变得更加复杂,后来在谷歌中找到一位国际友人,把这条链接给了我们,照着链接中的做很轻松就解决了,原来这个问题在官方文档中就有解决方案,可惜的是目前只有英文文档可以用,中文文档还没更新。
      以下是这个问题的思路和解法:

const FeedStack = createStackNavigator({
  FeedHome: FeedScreen,
  Details: DetailsScreen,
});

const TabNavigator = createBottomTabNavigator({
  Feed: FeedStack,
  Profile: ProfileScreen,
});

const AppNavigator = createSwitchNavigator({
  Auth: AuthScreen,
  Home: TabNavigator,
});

      在这样一个路由结构中,包含登录页面,导航页面与导航的子页面,我们要在页面从FeedHome跳转到Details时隐藏BottomTabNavigator

      我们可以找到createBottomTabNavigator有一个属性可以控制它的显示与隐藏即设置tabBarVisible: false时底部导航隐藏。

      但是在这样的解构中,直接给DetailsScreen设置这个属性是不对的,DetailsScreen对应的是FeedStack 路由,相当于给FeedStack 设置tabBarVisible: false,所以页面不会有任何变化,那我们应该怎么做呢,以下是解决方案:

const FeedStack = createStackNavigator({
  FeedHome: FeedScreen,
  Details: DetailsScreen,
});

FeedStack.navigationOptions = ({ navigation }) => {
  let tabBarVisible = true;
  if (navigation.state.index > 0) {
    tabBarVisible = false;
  }

  return {
    tabBarVisible,
  };
};

      即给FeedStack添加navigationOptions 属性,让它在导航到其他路由时,使tabBarVisible = false,返回这个属性,即可给createBottomTabNavigator配置隐藏。

      还可以用设置路由层级的方式解这个问题,一下是代码:

const FeedStack = createStackNavigator({
  FeedHome: FeedScreen,
  /* any other route you want to render under the tab bar */
});

const TabNavigator = createBottomTabNavigator({
  Feed: FeedStack,
  Profile: ProfileScreen,
});

const HomeStack = createStackNavigator({
  Tabs: TabNavigator,
  Details: DetailsScreen,
  /* any other route you want to render above the tab bar */
});

const AppNavigator = createSwitchNavigator({
  Auth: AuthScreen,
  Home: HomeStack,
});

相关文章

  • react-navigation在子路由中隐藏createBot

    解决方案 在百度上找了很多相关所谓的解决方案,并没有将问题解决,反而会让代码变得更加复杂,后来在谷歌中找到一位...

  • ReactNavigation在子路由中隐藏Tab分栏条(二)

    在实际开发过程中,APP的页面肯定不止一个,这就涉及到了多个页面的跳转,其中比较核心的两种方式为:Navigati...

  • vue嵌套路由

    嵌套路由 定义:路由中嵌套子路由,子路由中关键属性children例: 页面上 路由中

  • React-Navigation tabBarVisible的

    最近在研究React-Native,在使用facebook的框架React-Navigation的时候,隐藏Tab...

  • Vue中监听地址栏路由改变

    有时在遇到需要跳转子路由时让当前父路由隐藏,子路由显示可使用

  • 路由嵌套(子路由设置)

    子路由配置:在父级路由中添加children属性,值为子路由配置当想让某个子路由作为默认项时,path的值为空字符...

  • 子路由

    如,我们在关于页面里面有关于电影,关于书籍等页面,那么我们就可以在关于这个路由中创建两个子路由写法就是在关于路由中...

  • Vue路由中的子路由学习

    1、创建一个首页组件,并通过路由在根实例中显示: 2、创建另外两个子组件 3、给首页组件添加这两个子组件,首先要在...

  • Vue路由默认子路由

    在vue路由中,如果存在二级路由的话,那么该路由下的所有子路由默认都不会自己显示的,如果想要默认展示子路由的话就需...

  • React-Navigation在混合开发中报错undefine

    一、前言 我在之前的关于react-navigation 3.x中也提到过,react-navigation在混合...

网友评论

      本文标题:react-navigation在子路由中隐藏createBot

      本文链接:https://www.haomeiwen.com/subject/dihzbqtx.html