Apollo Client - 多次更新后的 refetchQueries
Apollo Client - refetchQueries after multiple updates
我正在使用 Apollo 客户端 3 并尝试构建一个 editable table
我有多个 API 突变,我应该在最后一个突变后触发 refetchQueries。
例如:
const [updateName] = useMutation(updateNameD)
const [updateAge] = useMutation(updateAgeD)
const [updateCity] = useMutation(updateCityD, {refetchQueries: () => [{ query: UsersDocument }],})
问题:突变的顺序不会始终相同,我需要在最后一个突变中重新获取查询
如果需要一次执行所有三个突变,那么您可以将三个突变查询合并为一个查询,并且您的 refetchQueries 只有在突变查询(组合的一个)完成后才会执行。请不要在合并查询时只有一个 useMutation
挂钩。
如果您有不同的用例,请告诉我。
[编辑]
如果不能分组查询,可以采用以下方法。
const [updateName] = useMutation(updateNameD)
const [updateAge] = useMutation(updateAgeD)
const [updateCity] = useMutation(updateCityD)
const [refetchPageData] = useLazyQuery(UsersDocument)
Promise.all(updateName(), updateAge(), updatedCity()).then(res => {
refetchPageData()
})
找到另一个解决方法:
useQuery hook return 也是一个 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()
我正在使用 Apollo 客户端 3 并尝试构建一个 editable table
我有多个 API 突变,我应该在最后一个突变后触发 refetchQueries。
例如:
const [updateName] = useMutation(updateNameD)
const [updateAge] = useMutation(updateAgeD)
const [updateCity] = useMutation(updateCityD, {refetchQueries: () => [{ query: UsersDocument }],})
问题:突变的顺序不会始终相同,我需要在最后一个突变中重新获取查询
如果需要一次执行所有三个突变,那么您可以将三个突变查询合并为一个查询,并且您的 refetchQueries 只有在突变查询(组合的一个)完成后才会执行。请不要在合并查询时只有一个 useMutation
挂钩。
如果您有不同的用例,请告诉我。
[编辑] 如果不能分组查询,可以采用以下方法。
const [updateName] = useMutation(updateNameD)
const [updateAge] = useMutation(updateAgeD)
const [updateCity] = useMutation(updateCityD)
const [refetchPageData] = useLazyQuery(UsersDocument)
Promise.all(updateName(), updateAge(), updatedCity()).then(res => {
refetchPageData()
})
找到另一个解决方法: useQuery hook return 也是一个 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()