Как обновить кеш со встроенными фрагментами - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь удалить пользователя из команды. Пользователь удален, но пользовательский интерфейс не обновляется без обновления.

Вот начальный запрос:

const GET_TEAM = gql`
  query Team($id: ID!) {
    team(id: $id) {
      name
      users {
        results {
          id
          name
        }
      }
    }
  }
`;

Вот моя мутация удаления:

const [deleteTeamUser] = useMutation(DELETE_TEAM_USER, {
    update(store) {
      const data = store.readQuery({
        query: GET_TEAM,
        variables: {
          id: teamId,
        },
      });

      const index = data.team.users.results.findIndex(user => user.id === id);
      const newData = { ...data };
      if (index > -1) {
        newData.team.users.results.splice(index, 1);
      }

      store.writeFragment({
        id: `TeamDetail:${teamId}`,
        fragment: gql`
          fragment myTeam on TeamDetail {
            name
            users {
              results {
                id
                name
              }
            }
          }
        `,
        data: newData,
      });
    },
  });

ошибка в консоли:

Invariant Violation: Cannot match fragment because __typename property is missing: {"team":{"name":"team1","description":"","users":{"results":[],"__typename":"UserListResultSet"},"__typename":"TeamDetail"}}

Есть идеи, почему пользовательский интерфейс не обновляется?

...