与 GraphQL 客户端反应

Roo*_*til 4 reactjs graphql react-apollo apollo-client apollo-boost

ReactGraphQL clientslike 一起使用Apollo Client是个好主意吗?我可以使用react和 new实现相同的结果Context API

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

axios.get('localhost://4000?qraphql').then((res)=>{

//do something with the response.
}) 
Run Code Online (Sandbox Code Playgroud)

还是有什么优势可以搭配Apollo Client。如果Apollo client没有它,我可以实现同样的目标,为什么我真的要去。它将帮助我减少我的bundle尺寸。

Dan*_*den 5

Apollo 客户端提供了大量功能,不仅仅是简单地从服务器获取数据。以下是一份非详尽清单:

  • 暴露加载、错误和数据状态,因此您不必为了异步获取数据而创建额外的有状态组件
  • 标准化缓存层,可让您避免向服务器发出不必要的重复请求
  • 可观察的查询,允许您的 UI 在任何查询或突变更改缓存的相关部分时更新
  • 强大的错误处理工具通过 apollo-link-error
  • 分页支持通过 loadMore
  • 针对突变的乐观 UI 更新
  • 支持订阅通过 apollo-link-ws
  • 通过与本地状态管理集成 apollo-link-state
  • 通过@defer指令支持延迟查询
  • 服务器端渲染支持
  • Apollo Client Developer Tools chrome 扩展,包括内置的 GraphiQL 控制台、查询观察器、变异检查器和缓存检查器。

有关更多详细信息,请参阅此处的大量文档。

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