Apollo客户端-多次更新后的refetchQueries

时间:2020-09-30 13:36:11

标签: react-apollo apollo-client

我正在使用Apollo客户端3.0。 我正在尝试管理人员表,并使用useMutation挂钩进行更新,

我的代码正在使用多个API调用,我想仅在上一次API校准之后触发refetchQueries

例如:

  const [updateName] = useMutation(updateNameD)
  const [updateAge] = useMutation(updateAgeD)
  const [updateCity] = useMutation(updateCityD, {refetchQueries: () => [{ query: UsersDocument }],})

问题在于,updateCity调用不会总是最后一次调用,而且我不想在每次调用中都调用refetchQueries

2 个答案:

答案 0 :(得分:1)

如果需要一次执行所有三个突变,则可以将三个突变查询合并为一个查询,只有在突变查询(合并一个)完成后,您的refetchQueries才会执行。请不要在合并查询时使用一个# let left, right be the given Polygons extended_left = Polygon( [ left.bounds[:2], (right.bounds[0], left.bounds[1]), \ (right.bounds[0], left.bounds[3]), left.bounds[2:] ] ) 钩子。

让我知道您是否有其他用例。

[编辑] 如果您无法对查询进行分组,则可以采用以下方法。

useMutation

答案 1 :(得分:0)

找到了另一个解决方法: useQuery钩子还返回refetch方法, 那么您可以在任何地方使用它

const [updateName] = useMutation(updateNameD)
const [updateAge] = useMutation(updateAgeD)
const [updateCity] = useMutation(updateCityD)
const {data, refetch} = useQuery(UsersDocument)

await Promise.all([updateName(), updateAge(), updatedCity()])
refetch()