Могу ли я прочитать каждый ответ от пакетных мутаций? [Apollo useMutation] - PullRequest
0 голосов
/ 06 ноября 2019

Допустим, я определил мутацию следующим образом:

const [deleteItem, {data}] = useMutation(deleteItemMutation)

, а затем повторно вызываю deleteItem (id) внутри цикла, есть ли способ, которым я могу прочитать каждый {data} ответ? Мутации сгруппированы, и ответом является массив (я могу видеть это, проверяя сетевой трафик). Однако переменная {data} содержит только ответ от последней пакетной мутации. Это имеет смысл, конечно, но мне все равно будут интересны результаты от всех из них. Любая идея, как я мог бы сделать это?

Я рассматриваю обертывание мутации в другую функцию, которая будет принимать обратный вызов, и я думаю, что это решит проблему. Но есть ли более простое решение?

1 Ответ

0 голосов
/ 06 ноября 2019

Функция mutate, возвращаемая ловушкой, возвращает Promise, который разрешается с результатом мутации. Поэтому, хотя data реквизит возвращается крючком для удобства, нет необходимости использовать его обязательно.

const items = ['a', 'b', 'c']
const results = await Promise.all(items.map(async (itemId) => {
  const { data } = await deleteItem({ variables: { itemId } })
  return data
}))
console.log(results[0].data)
...