【问题标题】:React native application structureReact 原生应用结构
【发布时间】:2019-03-31 04:53:48
【问题描述】:
1 Stack navigator:    
   1.1 Tabnavigator:
      1.1.1 Stack navigator:
         1.1.1.1 page one
      1.1.2 Stack navigator:
         1.1.2.1 page two
      1.1.3 Stack navigator:
         1.1.3.1 page three    
   1.2 page 4

这是我决定实施的结构。 我有几个问题还没有解决。 我希望根堆栈导航器标题显示徽标和后退按钮以防万一,并控制整个应用程序状态。 当我设置自定义标题时,我不知道如何告诉后退按钮隐藏或显示。我从根堆栈导航器的 navigationOptions 设置自定义标题。

有什么帮助吗?

【问题讨论】:

  • 如果不分享任何代码就很难提供帮助...
  • 假设我从头开始一切。你将如何实现它?
  • 我会开始写你概述的​​结构,并在你遇到问题后提出一个关于 SO 的具体问题,我会附上一个展示你尝试过的东西和问题所在的博览会小吃:)
  • 谢谢哥们,我正在等待你的解决方案,我会问关于它的问题。

标签: react-native react-navigation react-native-navigation react-navigation-stack


【解决方案1】:

您可以根据需要在每个屏幕(组件)上定义navigationOptions,这种方式对于您想要做的事情更加灵活。这是一个给你的例子,请注意我将headerLeft重新定义为EventInfo屏幕,你可以隐藏或显示headerLeft任何你想要的:

    ...
        class EventInfo extends PureComponent {

          // Set the navigation options for `react-navigation`
          static navigationOptions = ({navigation}) => {
            return {
              headerRight: <Icon style={{marginRight:10,color:'white'}} name="menu" size={32} onPress={() => {navigation.dispatch(DrawerActions.openDrawer())}}/>,
              headerTitle: <Text style={{flex:1,textAlign:'center',fontSize:18,color:'white',fontWeight:'bold'}}>{I18N.t('events.infoEventTitle')}</Text>,
              headerLeft: <Icon2 style={{color:'white', marginLeft:10, width:40}} name="ios-arrow-back" size={32} onPress={() => {navigation.navigate('Events')}}/>,
            }
          };
    ...

【讨论】:

  • 这种方法不起作用。因为我们在谈论嵌套导航,所以根堆栈不知道内部堆栈导航更改,所以它不知道何时显示后退按钮,这就是重点。在我的示例中,navigationOptions 将仅在设置和选项卡导航器中的任何选项卡中工作。我应该在嵌套堆栈导航器中做什么?
  • @user7326641 你能不能只导入Navigator 并使用Navigation.mergeOptions({...})
猜你喜欢
  • 2021-07-19
  • 1970-01-01
  • 2019-12-30
  • 1970-01-01
  • 2021-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多