首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Redux时访问应用程序范围的客户端?

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

Stack Overflow用户
提问于 2018-10-02 09:14:47
回答 1查看 29关注 0票数 0

我使用Redux管理状态,使用阿波罗执行graphQL查询。

我创建了一个阿波罗客户端,应该可以从各种反应组件访问。

代码语言:javascript
复制
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存储中的变量中?这对我来说有点奇怪,但也不是不合理的。还有更好的办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-02 13:56:56

只有可序列化的对象应该通过redux存储--函数或具有属性的对象不属于redux存储区。如果需要在function应用程序的组件层次结构之外引用阿波罗客户端,只需创建一个导出客户端对象本身的模块(而不是,即创建客户端的函数)。然后,您可以在任何地方导入客户机(包括包含ApolloProvider的代码),所有代码都将指向客户端的同一个实例(以及相同的缓存)。

重要的是,客户端的模块导出实例化客户端本身--如果导出创建客户端的函数,则每次导入它时都要重新创建它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52605397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档