【问题标题】:Difference between `writeQuery` and `writeData` in Apollo client?Apollo 客户端中“writeQuery”和“writeData”的区别?
【发布时间】:2020-03-09 15:43:24
【问题描述】:

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

这里有哪些最佳做法?什么时候开始?

【问题讨论】:

    标签: graphql apollo apollo-client


    【解决方案1】:

    来自the documentation

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

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

    从 GitHub 上的 cache.writeDatathe source 来看,Apollo 似乎会对您提供的数据进行一些分析以确定使用它的最佳方式,而 cache.writeQuery 将直接接受您的查询通过它并使用它。

    所以,总结一下:

    cache.writeQuery

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

    cache.writeData

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

    【讨论】:

      猜你喜欢
      • 2021-09-16
      • 2020-03-13
      • 2018-10-27
      • 2018-10-01
      • 1970-01-01
      • 2019-07-12
      • 2013-10-29
      • 2014-07-12
      • 1970-01-01
      相关资源
      最近更新 更多