我如何使用阿波罗当设置navigationOptions?

问题描述 投票:0回答:1

我在一个阵营原生应用正与阵营导航和阿波罗。

要设置页眉标题,您通常使用navigationOptions

class DemoComponent extends React.Component {

  public static navigationOptions = ({navigation}) => ({
    title: navigation.getParam("myParam", "Default title")
  })

  public render() {
    // ...
  }

}

与阿波罗,我在我的包裹在组件另:

export default () => (
  <DemoMutation mutation={DEMO_MUTATION}>
    {(mutation, result) => <DemoComponent mutation={mutation} result={result} />}
  </JoinGroupMutation>
);

这意味着,navigationOptions永远不会被读取,标题标题是空的。我试过传承navigation作为道具,但不工作(navigationOptions是一个静态的功能,不依靠道具)。

我能想到的一种解决方法,例如使用自定义首部组件,然后从navigation部件向下流过<DemoMutation>支柱,然后手动调用navigation.setParam()。这似乎有点违反直觉,但 - 有没有嵌套组件使用navigationOptions更简单的方法?

react-native react-navigation apollo
1个回答
0
投票

对此的解决方案是吊装静态函数的高次成分。有一个库调用hoist-non-react-statics所做的正是这一点。

export default hoistNonReactStatics(DemoMutation, DemoComponent);
© www.soinside.com 2019 - 2024. All rights reserved.