迁移到apollo客户端3.0后,使用“ withApollo”临时抛出找不到客户端上下文错误

时间:2020-01-08 10:18:58

标签: react-apollo apollo-client

TLDR;设法解决了这个问题,请输入look here

enter image description here在使用react-apollo 2.5时一切正常,现在我们开始迁移到3.0。

package.json相关部分的快照

    "@apollo/client": "^3.0.0-beta.19",
    "@apollo/react-components": "^3.1.3",
    "@apollo/react-hoc": "^3.1.3",

现在我遇到以下错误

Could not find "client" in the context of ApolloConsumer. Wrap the root component in an <ApolloProvider>.

我的应用程序的最外层组件确实是ApolloProvider,

迁移后导入 ApolloProvider 的方式如下

import { ApolloProvider } from "@apollo/client";

我也很注意从迁移文档中提到的“ @ apollo / react-hoc” 中导入 withApollo hoc。

迁移不只是更改package.json和导入中的版本吗?还是在创建阿波罗客户端实例时需要了解什么具体信息?

请在下面找到用于创建客户端实例的代码

import { ApolloClient, HttpLink, InMemoryCache } from '@apollo/client';

const cache = new InMemoryCache();

const client = new ApolloClient({
  link: new HttpLink({
    uri: process.env.REACT_APP_GRAPHQLURL,
  }),
  cache,
  connectToDevTools: true
});

1 个答案:

答案 0 :(得分:0)

根据迁移文档,您不应从 withApollo 导入 @apollo/react-hoc hoc

您应该使用 @apollo/client 中的 hoc 包

import { withApollo } from "@apollo/client/react/hoc";

https://www.apollographql.com/docs/react/migrating/apollo-client-3-migration/#apolloreact-hoc-and-apolloreact-components