反应导航(V2 / V3):如何在屏幕上的NavigationOptions中访问navigation.state.index

时间:2018-11-23 08:33:56

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

我正在构建一个React Native应用程序,对于我的导航,我使用React Navigation(V3)。对于我的UI元素,我使用React Native Elements。

我有一个屏幕,可以在多个导航器中重复使用。有时它是堆栈的根,有时是堆栈的。我想根据其在堆栈中的位置,以编程方式向该屏幕headerLeft添加一个navigationOptions元素,因为如果该屏幕是我想要显示默认的后退按钮,还是要显示一个汉堡菜单图标,位于堆栈的根部(因为堆栈嵌套在抽屉中)。

所以我尝试了以下操作:

export class ScannerScreen extends Component {
  static navigationOptions = ({ navigation }) => ({
    headerLeft:
      navigation.state.index > 0 ? (
        undefined 
      ) : (
        <Icon type="ionicon" name="ios-menu" onPress={navigation.toggleDrawer} />
      ),
    title: strings.scannerTitle
  });
// ...

问题是,由于navigation.state.index在此处是undefined,因此无法使用。如何使用React导航?

编辑: 根据请求,我添加了console.log(navigation)的屏幕截图(通过<Icon />的{​​{1}}。) enter image description here

1 个答案:

答案 0 :(得分:0)

我找到了一个# In the demo, we are doing a simple classification task on the entire # segment. # # If you want to use the token-level output, use model.get_sequence_output() # instead. 解决方案,可以,但是我也不太喜欢它:

hacky

这样,它将自动为整个堆栈设置它。您也可以在相应屏幕的单个导航选项中执行此操作。但这仅能起作用,因为为屏幕自动分配的键包含它的索引。