我正在将Meteor的Apollo客户端与wix/react-native-navigation结合使用,我想知道是否可以将Navigation.startSingleScreenApp
创建的根组件包装在ApolloProvider组件中?我已经尝试将ApolloProvider
放在另一个组件的render方法中并将其封装在Navigation.registerComponent
中,但这不起作用。有没有人有过使用这两者的经验?
我想知道注册ApolloProvider
的每个组件是否都有自己独立的根组件,如果是这种情况,我必须将a.print()
注册的每个组件都包含在内,可能使用更高阶的组件?我很感激任何想法或任何人可以提供的示例代码!提前谢谢。
答案 0 :(得分: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>
);
}
}
}
只需导入上面的函数,然后将要包装的组件传递给它。
答案 1 :(得分:0)
我发现这个问题的最简单的解决方案就是简单地在registerComponent函数中传递ApolloClient:
Navigation.registerComponent('pm.SplashScreen', () => SplashScreen, store, Provider, {client});
ApolloClient必须被称为“客户端”,因为react-native-navigation在您传递的对象上使用Spread Operator。