问题

我正在用本机创建一个社交媒体应用程序,并且我试图在同一应用程序中同时使用stackNavigator和TabNavigator。我有两个stackNavigator屏幕,均带有默认屏幕和另一个可以弹出的屏幕。之后,我尝试将这两个stackNavigator屏幕都放到tabNavigator屏幕中,并且出现很多奇怪的错误,例如转到stackNavigator屏幕只是将我带到一个新选项卡,而defualt选项卡(feed和notifs)不存在。在第一个屏幕上,只有弹出的第二个屏幕。



    const Feed = StackNavigator({
  Feed: {
    screen: FeedView,
  },
  CommentScreen: {
    screen: Comments,
  },
});

const Notifs = StackNavigator({
  NotificationView: {
    screen: Notifications,
  },
  CommentScreen: {
    screen: Comments,
  },
})

const MyApp = TabNavigator({

  Feed: {
    screen: FeedView,
  },
  Notifs: {
    screen: Notifs,
  },
},
{
  tabBarPosition: 'bottom',
  animationEnabled: false,
  lazy: true,
  tabBarOptions: {
    activeTintColor: '#fe8200',
    inactiveTintColor: '#A9A9A9',
    activeBackgroundColor: '#DCDCDC',
    inactiveBackgroundColor: '#ffffff',
    showIcon: 'true',
    showLabel: 'false',
  },
tabBarOptions: {
  showIcon: 'true',
  style: {
    backgroundColor: 'white',
  },
  tabStyle: {
    height: 53,
  },
  labelStyle: {
    fontSize: 14,
    color: 'grey',
  },
  iconStyle: {
    showIcon: 'true',
  },
  indicatorStyle: {
    backgroundColor: '#fe8200',
  },
}
});


export default MyApp;


应该发生什么

用户应具有两个选项卡,并且在每个选项卡上,可以使用不带选项卡的堆栈导航器将它们带到新屏幕。我很乐意为您解决问题!

最佳答案

关键是将屏幕的tabBarVisible设置为false,而无需使用制表符。

尝试:

const Feed = StackNavigator({
  Feed: {
    screen: FeedView,
  },
  CommentScreen: {
    screen: Comments,
    navigationOptions: {
      tabBarVisible: false,
    }
  },
});

const Notifs = StackNavigator({
  NotificationView: {
    screen: Notifications,
  },
  CommentScreen: {
    screen: Comments,
    navigationOptions: {
      tabBarVisible: false,
    }
  },
})


并且存在命名问题。在<MyApp />中,它可能是Feed而不是FeedView

const MyApp = TabNavigator({
  Feed: {
    screen: Feed,
  },
  Notifs: {
    screen: Notifs,
  },
},

10-04 16:29