我可以将 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。
我正在使用 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。