首页 > 解决方案 > 如何通过道具而不是上下文提供 ApolloClient

问题描述

我正在逐渐将 Apollo 整合到一个相当重要的 React/Redux 应用程序中。我现在不喜欢将我的 React 应用程序打包ApolloProvider。我想ApolloClient为不同的 GraphQL 端点支持多个实例,而且我不太喜欢嵌套提供程序的想法(我已经使用了 Redux 的Provider)。一般来说,我试图“缓和”到 Apollo 并在一些特定的地方明确添加它。这是我的动机,现在这是我的问题:

通过 propsApolloClient直接向组件提供实例对我来说似乎是合理的。Query这样我们就明确了数据源并且可以支持多个客户端。这似乎有效:

const client = new ApolloClient({
    uri: "https://w5xlvm3vzz.lp.gql.zone/graphql"
});

...
<Query client={client} variables={...} query={}>
    ...
</Query>

我对这种方法的唯一担心是控制台中出现错误:

Uncaught Error: Could not find "client" in the context of Query or as passed props. Wrap the root component in an <ApolloProvider>

关于避免此错误消息的任何想法?我意识到使用ApolloProvider注入客户端更为典型,但对于我的情况,我更喜欢将其作为道具传递的明确性和灵活性。它似乎正在工作,但我想避免控制台错误。

谢谢!

标签: react-apollo

解决方案


推荐阅读