reactjs - 与 GraphQL 客户端反应
问题描述
React
与GraphQL clients
like一起使用Apollo Client
是个好主意吗?react
我可以使用和 new获得相同的结果Context API
。
基本上我可以使用GraphQL API
s usingaxios
或任何其他类似的库。对于状态管理,我可以使用 react 的 new Context API
,这非常简单。
axios.get('localhost://4000?qraphql').then((res)=>{
//do something with the response.
})
是否还有任何优势Apollo Client
。Apollo client
当我没有它也能达到同样的效果时,为什么我真的会去。它将帮助我减小bundle
尺寸。
解决方案
除了简单地从服务器获取数据之外,Apollo 客户端还提供了大量功能。以下是一份非详尽的清单:
- 暴露加载、错误和数据状态,因此您不必创建额外的有状态组件来异步获取数据
- 规范化的缓存层,可让您避免向服务器发出不必要的重复请求
- 可观察的查询允许您的 UI 在任何查询或突变更改缓存的相关部分时进行更新
- 强大的错误处理工具通过
apollo-link-error
- 分页支持通过
loadMore
- 针对突变的乐观 UI 更新
- 支持订阅通过
apollo-link-ws
- 通过与本地状态管理集成
apollo-link-state
@defer
通过指令支持延迟查询- 服务器端渲染支持
- Apollo Client Developer Tools chrome 扩展,包括内置的 GraphiQL 控制台、查询观察器、突变检查器和缓存检查器。
有关更多详细信息,请参阅此处的大量文档。
有一些常见的模式导致必须编写(和测试)一堆样板代码,例如维护加载状态,以便您的 UI 知道请求何时完成。使用 Apollo 或任何其他类似的客户端,消除了编写所有样板文件的需要,并提供了一个干净、经过良好测试的 API 供您使用。如果您在一个团队中工作,那么使用您的团队中的一些人可能已经熟悉的文档齐全的库也有好处,而不是必须学习一些仅为特定项目创建的新 API。