Клиент Apollo useQuery не обновляет данные после useMutation - PullRequest
0 голосов
/ 20 февраля 2020

Используя эту мутацию:

import produce from 'immer

const [createItem] = useMutation(CREATE_ITEM, {
update (client, { data: { createItem } }) {
  const queryResults = client.readQuery({
    query: GET_LATEST_ORDER,
    variables: { orderDepth: 1 }
  })

  client.writeQuery({
    query: GET_LATEST_ORDER,
    variables: { orderDepth: 1 },
    data: produce(queryResults, draft => {
      draft.orders[0].items.push(createItem)
    })
  })
}

})

Я не могу получить

  const { loading, data, refetch } = useQuery(GET_LATEST_ORDER, {
variables: { orderDepth: 1 }

})

для отображения обновленных данных после мутации.

Кеш Аполлона обновлен правильно. Но данные об использовании Query не меняются.

1 Ответ

0 голосов
/ 20 февраля 2020

Проблема закончилась тем, что возвращенный объект от мутации не был точно таким же. В нем отсутствовало поле @client.
Хотя в ретроспективе очевидно, что ни в одном месте, где я проводил поиск, это не было причиной, за исключением комментария, в котором я упоминал, что, возможно, отсутствует __typename. Это было бы очевидно, если бы Аполлон выдал ошибку. Тем не менее, не было выдано никакой ошибки, и не существовало в useQuery.

...