Apollo客户端中的writeQuery和writeData之间的区别?

时间:2019-11-13 19:08:25

标签: graphql apollo apollo-client

根据docs关于本地状态管理,可以同时使用writeDatawriteQuery将数据附加到缓存。

这里的最佳做法是什么?什么时候一个接一个?

1 个答案:

答案 0 :(得分:1)

来自the documentation

  

要将数据写入缓存,可以使用"Email Incorrect"cache.writeQuery。两者之间的唯一区别是cache.writeData要求您传入查询以验证要写入高速缓存的数据的形状与查询所需的数据的形状相同。在后台,cache.writeQuery会根据您传入的cache.writeData对象自动构造一个查询,并调用data

唯一的区别是:您是构造传递的查询(直接调用cache.writeQuery还是让Apollo处理它(通过调用cache.writeQuery)?

从GitHub上cache.writeData的{​​{3}}看,看来Apollo会对您提供的数据进行一些分析,以确定最佳的使用方式,而cache.writeData将直接处理通过的查询并使用它。

因此,总结一下:

cache.writeQuery

  • 优点:可能更快,可以提供数据形状验证
  • 缺点:您必须自己提供查询

cache.writeQuery

  • 优点:您让Apollo处理构建查询
  • 缺点:可能比较慢,没有数据形状验证