在React Navigation的navigationOptions中哪里可以找到`scene`?

时间:2018-04-01 20:35:12

标签: react-native react-navigation

我正在尝试在React Navigation StackNavigator Header中实现自定义后退按钮。

这有效:

static navigationOptions = ({ navigation }) => {
  return {
    title: '...',
    headerStyle: {
      ...
    },
    headerTitleStyle: {
      ...
    },
    headerLeft: <BackButton onPress={() => navigation.goBack()}/>,
  }
};

但是现在我想在无处可回的时候隐藏后退按钮。我通过查看当前场景的索引找到default header does this,并在索引=== 0时隐藏它。

scenes堆栈是否提供给navigationOptions?如果是的话,它在哪里?还是有另一种方法可以做到这一点吗?

2 个答案:

答案 0 :(得分:1)

有两种方法可以做到这一点:

  1. 在状态管理中保存导航堆栈信息(我认为您至少可以轻松找到Redux和MobX的教程)

  2. navigation包含对象state,其中包含有关路线的信息。如果routeName与您的初始路线匹配,那么很明显您就是第一个场景。

  3. 如果其中任何一个匹配,那么您只需将headerLeft设置为 null

答案 1 :(得分:0)

我在withNavigation组件本身使用BackButton解决了这个问题。这似乎给了我传递给navigation的{​​{1}}对象上没有的信息。

navigationOptions