3

我将 Meteor 的Apollo Client 与wix/react-native-navigation结合使用,我想知道是否可以将由 ApolloProvider 创建的根组件包装Navigation.startSingleScreenAppApolloProvider组件中?我尝试将其放入Navigation.startSingleScreenApp另一个组件的渲染方法中并将其封闭,ApolloProvider但没有奏效。有没有人有过将这两个一起使用的经验?

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

4

2 回答 2

2

我已经使用高阶组件来包装每个已注册的组件。我用于 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>
      );
    }
  }
}

只需导入上面的函数并将要包装的组件传递给它。

于 2016-10-16T20:19:13.960 回答
0

我为这个问题找到的最简单的解决方案是简单地将 ApolloClient 传递给 registerComponent 函数,如下所示:

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

ApolloClient 必须被称为“客户端”,因为 react-native-navigation 在您传递的那个对象上使用了传播运算符。

于 2017-09-12T13:45:16.447 回答