【发布时间】:2022-11-18 11:14:16
【问题描述】:
我在 youtube 上关注 Ben Awad 的“Fullstack React GraphQL TypeScript 教程”。它已经有几年历史了,所以我争先恐后地修改代码以使用更新的包,特别是这里的 urql-graphcache。
如果你也跟着一起,我已经接近 7:48 时间标记了。
我通读了有关 cache.resolve() 方法的文档。
这些是文档中的示例
// This may resolve a link:
cache.resolve({ __typename: 'Query' }, 'todo', { id: 1 }); // 'Todo:1'
// This may also resolve records / scalar values:
cache.resolve({ __typename: 'Todo', id: 1 }, 'id'); // 1
// You can also chain multiple calls to `cache.resolve`!
cache.resolve(cache.resolve({ __typename: 'Query' }, 'todo', { id: 1 }), 'id'); // 1
这些示例没有解释我在我的应用程序中获得的恰好适用于教程的行为。
//first resolve call
const res = cache.resolve("Query", "posts({"limit":10})") //Query.posts({"limit":10})
//second resolve call
const res2 = cache.resovle(res as Entity, 'posts') // [Post:1, Post:2, Post:3]
看起来 cache.resolve() 实际上是 2 个根本不同的函数的包装器。但是为什么会这样呢?
第一个 cach.resolve() 解决的是什么? res作为实体的结果如何?
有没有一种方法可以构造调用,以便我只需要调用一次?
【问题讨论】: