与 GraphQL 客户端反应

react with GraphQL Clients

Apollo Client 一样将 ReactGraphQL clients 一起使用是个好主意吗?我可以使用 react 和新的 Context API 获得相同的结果。

基本上我可以使用 axios 或任何其他类似的库来使用 GraphQL APIs。对于状态管理,我可以使用 React 的新 Context APIs,这非常简单。

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 客户端开发人员工具 chrome 扩展,包括内置 GraphiQL 控制台、查询观察器、变异检查器和缓存检查器。

有关详细信息,请参阅详尽的文档 here

有一些常见的模式导致必须编写(和测试)一堆样板代码,例如维护加载状态,以便您的 UI 知道请求何时完成。使用 Apollo 或任何其他类似客户端,无需编写所有样板文件,并提供干净、经过良好测试的 API 供您使用。如果您在一个团队中工作,还有一些话要说,就是使用一个您的团队中的一些人可能已经熟悉的文档齐全的库,而不是必须学习一些专门为一个特定的项目。