我使用Redux管理状态,使用阿波罗执行graphQL查询。
我创建了一个阿波罗客户端,应该可以从各种反应组件访问。
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存储中的变量中?这对我来说有点奇怪,但也不是不合理的。还有更好的办法吗?
发布于 2018-10-02 13:56:56
只有可序列化的对象应该通过redux存储--函数或具有属性的对象不属于redux存储区。如果需要在function应用程序的组件层次结构之外引用阿波罗客户端,只需创建一个导出客户端对象本身的模块(而不是,即创建客户端的函数)。然后,您可以在任何地方导入客户机(包括包含ApolloProvider的代码),所有代码都将指向客户端的同一个实例(以及相同的缓存)。
重要的是,客户端的模块导出实例化客户端本身--如果导出创建客户端的函数,则每次导入它时都要重新创建它。
https://stackoverflow.com/questions/52605397
复制相似问题