В настоящее время есть элементы кеша, к которым обращаются нормально, это простые объекты, но они борются с тем, что должно произойти, когда объект, передаваемый в 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 Вы могли бы видеть сообщения в других, скажем, категории а в категории б.
PostConnection.a {
items:
cat a item
cat b item
cat b item
}