【发布时间】:2020-08-30 22:28:47
【问题描述】:
我对 GraphQL 和 Apollo 还很陌生,但过去 3 年我一直在使用 Redux 和 React。基于 Apollo 文档,他们鼓励开发人员将其用作唯一的事实来源:
我们希望能够从以下位置访问布尔标志和设备 API 结果 我们的应用程序中有多个组件,但不想单独维护 Redux 或 MobX 商店。理想情况下,我们希望 Apollo 缓存成为 我们客户端应用程序中所有数据的单一事实来源
我正在尝试找出用 Apollo 复制 Redux 允许我的方法。在我的应用程序中,我有“标签”,一个对象数组,每个对象有近 15 个不同的字段。它们用于我的应用程序的 3 个不同部分,每个部分显示特定的“标签”以及“标签”中的特定字段。基于此,我使用 Redux 处理此问题的方法是从我的 API 中获取“标签”,并且在 reducer 中,我创建不同的数组,其中包含每个部分所需的特定“标签”的 ID,我还创建带有原始数据的 Map (id, value)。它会是这样的:
const tags = new Map(); //(tagId, tag) containing all the tags
const sectionATags = []; // array of ids for section A tags
const sectionBTags = []; // array of ids for section B tags
const sectionCTags = []; // array of ids for section C tags
我的目标是复制相同的行为,但即使他们鼓励您使用 Apollo 管理您的本地状态,我也不确定我想要实现的目标是否可以通过简单的方式 ,或者如果使用 Apollo 这样做实际上是一种良好做法。我一直在关注文档中的this example,他们主要做的是通过扩展查询或使用@client 指令改变缓存数据来添加或删除从服务器接收的数据中的额外字段。
同时,我了解 GraphQL 旨在查询您需要的特定数据,而不是典型的 REST 请求,在这种请求中,无论您是否需要,您都会获得包含所有数据的大型 JSON,但感觉就像在这种情况下使用每个部分所需的特定数据进行 3 个不同的查询一样效率不高。
我不确定我是否遗漏了什么,或者 Apollo 可能被认为是“更简单的本地状态管理”。我是在走正确的道路,还是应该继续使用 Redux 和另一个 GraphQL 库,它只允许我在没有管理层的情况下获取数据?
【问题讨论】:
标签: reactjs redux graphql apollo