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

Pau*_*erg 4 apollo graphql apollo-client

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

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

gue*_*gui 11

文档

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

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

从GitHub 上的来源来看cache.writeData,似乎 Apollo 会对您提供的数据进行一些分析,以确定使用它的最佳方式,同时cache.writeQuery会直接接受您传递的查询并使用它。

所以,总结一下:

cache.writeQuery

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

cache.writeData

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