我可以将 wix/react-native-navigation 创建的根组件包装在 ApolloProvider 组件中吗

Can I wrap the root component created by wix/react-native-navigation in an ApolloProvider component

我正在使用 Meteor 的 Apollo Client in conjunction with wix/react-native-navigation and I was wondering is it possible to wrap the root component created by Navigation.startSingleScreenApp in an ApolloProvider 组件?我试过将 Navigation.startSingleScreenApp 放在另一个组件的渲染方法中并将其包含在 ApolloProvider 中,但这没有用。有没有人有过将这两个一起使用的经验?

我想知道是否每个在 Navigation.registerComponent 注册的组件都有自己单独的根组件,如果是这样,我必须将我在 ApolloProvider 注册的每个组件括起来,可能使用更高的顺序零件?我将不胜感激任何人可以提供的任何想法或示例代码!提前致谢。

我已经使用高阶组件包装了每个注册组件。我用于 HOC 的代码如下:

import React from 'react';
import appClient  from '../store/apollo';
import { ApolloProvider } from 'react-apollo';

export default function apolloProviderHOC(WrappedComponent){
  return class PP extends React.Component {
    render() {
      return (
        <ApolloProvider client={appClient}>
          <WrappedComponent {...this.props}/>
        </ApolloProvider>
      );
    }
  }
}

只需导入上面的函数,然后将你要包装的组件传入即可。

对于这个问题,我找到的最简单的解决方案是简单地在 registerComponent 函数中传递 ApolloClient,就像这样:

Navigation.registerComponent('pm.SplashScreen', () => SplashScreen, store, Provider, {client});

必须调用 ApolloClient "client" 因为 react-native-navigation 在您传递的那个对象上使用了 Spread Operator。