Как я могу установить navigationOptions при использовании Apollo? - PullRequest
0 голосов
/ 09 февраля 2019

Я работаю над приложением React Native с React Navigation и Apollo.

Чтобы установить заголовок заголовка, вы обычно используете navigationOptions:

class DemoComponent extends React.Component {

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

  public render() {
    // ...
  }

}

В Apollo IЗаворачиваю мой компонент в другой:

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

Это означает, что navigationOptions никогда не читается, а заголовок заголовка пуст.Я попытался передать navigation в качестве опоры, но это не работает (navigationOptions - статическая функция и не зависит от реквизита).

Я могу придумать обходной путь, например, используяпользовательский компонент заголовка и затем пропускающий navigation проп из компонента <DemoMutation> и затем вручную вызывающий navigation.setParam().Это кажется немного нелогичным - есть ли более простой способ использования navigationOptions во вложенном компоненте?

1 Ответ

0 голосов
/ 09 февраля 2019

Решением этой проблемы является подъем статической функции к компоненту высшего порядка.Есть библиотека с именем hoist-non-react-statics, которая делает именно это.

export default hoistNonReactStatics(DemoMutation, DemoComponent);
...