Как выполнить рефакторинг кода при обновлении кеша с использованиемact и graphql? - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть имя объекта countCacheData с полями book_count, pen_count и __typename. Теперь я хочу обновить его, уменьшив значение book_count на 1 и сохранив значение pen_count таким же. поэтому я делаю что-то вроде ниже,

const createItem = (variables: CreateItemInput) => {
    return mutation({
        variables,
        update: (cache, { data }) => {
           if (data) {
               const ListCacheData: any = cache.readQuery({
                   query: LIST_ITEMS,
               });
               ListCacheData.list.push(data.createShare);
               cache.writeQuery({ query: LIST_ITEMS, data: ListCacheData });

               const countCacheData: any = cache.readQuery({
                   query: GET_COUNT,
               });
               const book_count =
               countCacheData.getRemainingCount.book_count - 1;
               const {pen_count} = countCacheData.getRemainingCount;
               countCacheData.getRemainingCount = {
                   book_count,
                   pen_count,
                   __typename: 'ResourceCount',
               };
               cache.writeQuery({
                   query: GET_COUNT,
                   data: countCacheData,
               });
           }
       },
   });
   return { createItem, result };
};

Теперь, как вы видите в коде выше, я переписываю и присваиваю значения book_count и pen_count, а затем присваиваю его countCacheData и затем записываю в кеш с данными: countCacheData .подобно ниже

const book_count = countCacheData.getRemainingCount.book_count - 1                                 
const {pen_count} = countCacheData.getRemainingCount;
countCacheData.getRemainingCount = {
    book_count,
    pen_count,
    __typename: 'ResourceCount',
};
cache.writeQuery({
    query: GET_COUNT,
    data: countCacheData,
});

Как лучше переписать этот код? Может ли кто-нибудь помочь мне с этим. спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...