Как обновить кеш после мутации для запроса с помощью реакции и машинописи? - PullRequest
0 голосов
/ 24 апреля 2020

Я хочу обновить кеш после создания мутации.

Что я пытаюсь сделать? У меня есть метка, которая показывает количество и кнопки создания и удаления.

когда пользователь нажимает кнопку создания, значение счетчика уменьшается на единицу. и нажатие на кнопку «Удалить» увеличит количество на единицу.

Теперь, когда нажата кнопка «Создать», я хочу обновить значение счетчика, не обновляя страницу. чтобы сделать это, я думал обновить кэш внутри мутации, в которой происходит создание мутации.

ниже - мой код,

import { useCreate, useDelete } from '../some/some.mutation-hooks';
import { useGetCount } from '../count/GetCount.query-hooks';

function Parent () {
    const { available } = useGetCount();
    const count = available.count;
    create_item = asyc () => {
        try {
            await create({ email: email});
        }
    }

    render = ( ) => {
        return (
            <span>Label Count</span>
            <span>{Count}</span>
            <Button onClick={create_item}>Create</Button>
        )
    }
}

хук мутации для создания - как показано ниже,

const create = (variables: CreateInput) => {
    return mutation({
        variables,
        update: (cache, { data }) => {
            if (data) {
                const cacheData1: any = cache.readQuery({ query: LIST });
                cacheData.list.push(data.create);
                cache.writeQuery({ query: LIST, data: cacheData });
                const cacheData2: any = cache.readQuery({query: getCount});
                cacheData2.//////////////////////do not know with what value or how to get new count 
                //value to 
               //update cachedata2 with new value of count
               cache.writeQuery({query: getCount, data: cacheData });
           }
       },
   });

};

Может кто-нибудь помочь мне понять, как обновить это значение счетчика. я не хочу использовать refetchquery..это работает ... но я хочу использовать кэш обновлений,

Может кто-нибудь дать некоторое представление об этом. Спасибо.

return {create, result}; };

...