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

Posted

技术标签:

【中文标题】我可以将 wix/react-native-navigation 创建的根组件包装在 ApolloProvider 组件中吗【英文标题】:Can I wrap the root component created by wix/react-native-navigation in an ApolloProvider component 【发布时间】:2017-02-25 02:39:24 【问题描述】:

我将 Meteor 的 Apollo 客户端与 wix/react-native-navigation 结合使用,我想知道是否可以将 Navigation.startSingleScreenApp 创建的根组件包装在 ApolloProvider 组件中?我尝试将Navigation.startSingleScreenApp 放在另一个组件的渲染方法中,并将其包含在ApolloProvider 中,但这不起作用。有没有人有过将这两者结合使用的经验?

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

以上是关于我可以将 wix/react-native-navigation 创建的根组件包装在 ApolloProvider 组件中吗的主要内容,如果未能解决你的问题,请参考以下文章

我需要将一个 ifstream 传递给一个函数,这样我就可以将它添加到一个向量中

我可以将 Enum 扩展为 Enum.GetValues() 吗? [复制]

我可以将 Bootstrap Carousel 移到右侧而不是中心吗?

我可以将标签附加到 SKNode 吗?

我可以将 Unity 与 iOS 混合使用吗?

我可以将对象添加到我的 Access 数据库吗?