Обновление кеша на клиенте Apollo - PullRequest
0 голосов
/ 29 октября 2018

Я использую Apollo Dev Tools для Chrome, и я не могу понять, как обновить кэш.

  1. Кеш одинаков после каждого запроса, даже если он отображает правильные данные.

  2. Я разрабатываю приложение CRUD и при удалении хочу, чтобы на странице отображались изменения, внесенные на сервере. После выполнения мутации, которая удаляет элемент в БД, я также хочу удалить этот элемент из кэша.

    // mutation
    const DELETE_ELEMENT_MUTATION = gql`
      mutation DELETE_ELEMENT_MUTATION($id: String!) {
        deleteElement(id: $id)
      }
    `;
    
    // update cache
    update = (cache, payload) => {
      const data = cache.readQuery({query: queryAllElements});
      const result = data.allElements.filter(element => {
        const elementId = script._id;
        const compareId = JSON.parse(payload.data.deleteElement).id;
    
        return elementId !== compareId;
      });
    
      cache.writeQuery({query: queryAllElements, data: result});
    };
    
    <Mutation
      mutation={DELETE_ELEMENT_MUTATION}
      variables={{id: id}}
      update={this.update}
    >
      {(deleteElement) => (
        <Icon
          onClick={() => {
            deleteElement();
          }}
        />
      )}
    </Mutation>
    

После обновления кеш не обновляется.

Редактировать: изменено

cache.writeQuery({query: getAllElements, data: result}); 
// to 
cache.writeQuery({query: queryAllElements, data: result});

1 Ответ

0 голосов
/ 31 октября 2018

Я решил проблему. Оказывается, я обновлял не тот ключ в кеше.

решение

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