当前有一些缓存项可以很好地访问,它们是简单的对象,但是当传递给 dataIdFromObject 的对象是一个对象的键是一个对象数组时应该发生什么。例如:
const dataIdFromObject = (obj) => {
switch(obj.__typename) {
case 'Post':
return `${obj.__typename}.${obj.categoryId}.${obj.postId}
case 'PostConnection':
return obj.items ? obj.items[0].categoryId : defaultDataIdFromObject(obj)
default:
return defaultDataIdFromObject(obj)
}
}
obj.items
是 Post 对象的数组。
问题是数据似乎不时使用嵌套项数组中的第一项从其他类别缓存。这样做有什么问题吗?
如果未取消请求,是否可能存在潜在的竞争条件,这可能会导致来自另一个类别的数据存储在错误的缓存键下,因为在查看 localStorage 时,您将能够看到其他类别下的帖子,比如说类别 b 下的类别.
PostConnection.a {
items:
cat a item
cat b item
cat b item
}