如何通过道具而不是上下文提供ApolloClient

时间:2018-05-15 18:04:07

标签: react-apollo

我逐渐将Apollo整合到一个相当实质的React / Redux应用程序中。我暂时不想在ApolloProvider中包装我的React应用程序。我想为不同的GraphQL端点支持多个ApolloClient实例,我不太喜欢嵌套提供程序的想法(我已经使用了Redux' s Provider)。一般来说,我试图在"到Apollo并在几个特定的​​地方明确添加它。这是我的动机,现在这是我的问题:

通过props直接向ApolloClient组件提供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来注入客户端更为典型,但对于我的情况,我更喜欢将它作为道具传递的明确性和灵活性。它似乎工作,但我想避免控制台错误。

谢谢!

0 个答案:

没有答案