我可以读取批次突变的每个响应吗? [阿波罗useMutation]

时间:2019-11-06 11:34:42

标签: reactjs graphql react-apollo

假设我已经定义了一个这样的突变:

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

,然后在循环内重复调用deleteItem(id),有什么办法可以读取每个{data}响应?突变被批量处理,并且响应是一个数组(我可以通过检查网络流量来看到)。但是,{data}变量仅包含来自最后一批突变的响应。当然这是有道理的,但是我仍然会对所有这些结果感兴趣。知道我该怎么做吗?

我正在考虑将突变包装在另一个需要回调的函数中,我认为这可以解决问题。但是,有没有更简单的解决方案?

1 个答案:

答案 0 :(得分:0)

钩子返回的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)