Я хочу исправить ошибку отсутствующего поля, которая появляется при обновлении кэша.
что я пытаюсь сделать? У меня есть ярлык с названием «Количество доступных предметов», который отображает количество и кнопки добавления, удаления. поэтому, когда пользователь нажимает кнопку «Добавить», это количество уменьшается, а нажатие кнопки «Удалить» увеличивает количество.
У меня есть два запроса: один для перечисления элементов LIST_ITEMS и другой для получения количества доступных элементов «GET_COUNT».
, как показано ниже, с их типами и схемой.
type Count {
first: Int!,
second: Int!,
}
type ITEM {
name: String,
id: ID!,
}
type Query {
getCount: Count,
listItems: [ITEM],
}
export const LIST_ITEMS = gql`
query ListItems {
listItems {
name
id
}
}
`;
export const GET_COUNT = gql`
query GetCount {
getCount {
first
second
}
}
`;
function Parent () {
const { availableCount } = useGetCount();
const Count = availableCount.first;
const onAdd = async () => {
try {
await createItem({ name: name, Id: some_var.id });
}
};
render = () => {
return (
<span>Count of items</span>
<span>{Count}</span>
<button onClick={onAdd}>Add</button>
)
}
Теперь, когда пользователь нажимает кнопку Добавить, вызывается мутация createItem, в которой мы обновляем кэш, чтобы обновить созданный элемент в списке элементов. а также уменьшить значение счетчика из кэша.
Это когда я получаю ошибку «Отсутствует поле GetCount в 2»
это значение 2 является значением значения счетчика, если отображаемое значение счетчика равно 3 это показывает 2. аналогично, если отображаемое значение счетчика равно 4, это показывает 3 по ошибке.
мутация createItem выглядит следующим образом:
const createItem = (variables: CreateItemInput) => {
return mutation({
variables,
update: (cache, { data }) => {
if (data) {
const ItemsListCacheData: any = cache.readQuery({
query: LIST_ITEMS,
});
itemsListCacheData.listItems.push(data.createItem);
cache.writeQuery({ query: LIST_ITEMS, data: itemsListCacheData });
const countCacheData: any = cache.readQuery({
query: GET_COUNT,
});
cache.writeQuery({
query: GET_COUNT,
data:
countCacheData.getCount.siteShares - 1, //doing this causes the error
});
}
},
});
};
Может кто-нибудь, помогите мне исправить это «отсутствующее поле getCount in 3», учитывая, что значение Count равно 4.
Спасибо