使用Redux时访问应用程序范围的客户端?

使用Redux时访问应用程序范围的客户端?,redux,react-redux,apollo,react-apollo,Redux,React Redux,Apollo,React Apollo,我使用Redux管理状态,Apollo执行graphQL查询 我创建了一个Apollo客户端,它应该可以从各种React组件访问 import { ApolloClient } from 'apollo-client'; import { HttpLink } from 'apollo-link-http'; import { InMemoryCache } from 'apollo-cache-inmemory'; const link = new HttpLink({ uri: g

我使用Redux管理状态,Apollo执行graphQL查询

我创建了一个Apollo客户端,它应该可以从各种React组件访问

import { ApolloClient } from 'apollo-client';
import { HttpLink } from 'apollo-link-http';
import { InMemoryCache } from 'apollo-cache-inmemory';

const link = new HttpLink({
    uri: getGraphqlEndpointUrl,
    headers: {
        'x-api-key': getApiKey(),
        'Authorization': jwtToken,
    },
});
const client = new ApolloClient({
    link: link,
    cache: new InMemoryCache(),
});

我如何使用Redux实现这一点?我是否将客户端存储在Redux存储区的变量中?这对我来说似乎有点奇怪,但并非不合理。但是有更好的方法吗?

只有可序列化的对象应该通过redux存储——函数或具有函数作为属性的对象不属于redux存储。如果需要在React应用程序的组件层次结构之外引用Apollo客户端,只需创建一个导出客户端对象本身的模块(不是创建客户端的函数)。然后,您可以随时导入客户端(包括包含您的提供程序的代码),并且所有代码都将指向客户端的同一实例(和同一缓存)

客户机模块导出实例化的客户机本身非常重要——如果导出创建客户机的函数,则每次导入时都将重新创建它