修改导致的失效 invalidation-from-mutations
(为了使查询重新检验或其他必要的程序)使查询失效只是挑战的一半。知道何时使它们无效是另一半。 通常,当应用中的一个对数据的修改成功时,很有可能在你的应用中有相关的查询需要作废,并需要重新获取数据来解释修改所产生的新变化。
例如,假设我们有一个修改用于 POST 一个新的 todo:
const mutation = useMutation(postTodo);
当对postTodo
的修改成功时,我们可能希望对所有的todos
查询都暂时失效,并重新获取以显示新的 todo 项。
为此,可以使用useMutation
的onSuccess
参数和client
(QueryClient)的invalidateQueries
函数:
import { useMutation, useQueryClient } from "react-query";
const queryClient = useQueryClient();
// 当此修改成功时,将所有带有`todos`和`reminders`查询键值的查询都无效
const mutation = useMutation(addTodo, {
onSuccess: () => {
queryClient.invalidateQueries("todos");
queryClient.invalidateQueries("reminders");
},
});
您可以使用useMutation
hook中的回调来响应下一步干什么