reactjs - 如何在反应查询中进行依赖突变?
问题描述
我有一个mutate函数,它发出POST请求并接收id
,然后我需要立即调用下一个mutation函数按照这个进行购买,id
我该怎么做?
const mutation = useCreatePaymentMethodMutation();
const handleSubmit = async(values:any) {
const form = await mutation.mutateAsync({
values,
hash
})
return form
}
useCreatePaymentMethodMutation
从@Hooks 导入
const useCreatePaymentMethodMutation = () => {
return useMutation(
({ values, accessHash }: { values: any; accessHash: string }) =>
createPaymentMethodRequest(values, accessHash),
{
onSuccess: (data) => {
// usePayMutation(data.data, accessHash); error. I need to use data after 1st mutation in next
request
console.log("on success data ", data);
},
}
);
}
更新 1
这是我的usePayMutation
方法
const usePayMutation = () => {
return useMutation(({ data, id }: { data: any; id: string }) =>
payRequest(data, id)
);
};
解决方案
有 2 个选项供您选择
选项 1:
在你的useCreatePaymentMethodMutation
钩子里
const useCreatePaymentMethodMutation = () => {
const mutatePay = usePayMutation()
return useMutation(
({ values, accessHash }: { values: any; accessHash: string }) =>
createPaymentMethodRequest(values, accessHash),
{
onSuccess: (data) => {
mutatePay(data.id)
},
}
);
}
选项 2:
在您的handleSubmit
功能中
const mutatePay = usePayMutation()
const handleSubmit = (values:any) => {
return mutation.mutateAsync({
values,
hash
}).then(data=> mutatePay(data.id))
}
推荐阅读
- angular - TypeError:无法读取未定义 Angular 的属性“indexOf”
- algorithm - 从数组中查找元素,使得没有两个相邻且总和最大
- vba - 根据另一个单元格中的值自动填充 x 行的代码
- java - “InputMismatchException”错误,计算文件中的行数
- powershell - 如何在不使用 SMB 共享的情况下使用 Powershell 远程列出文件(仅限 winRM 端口)?
- c++ - C ++ 11类中放置枚举类的重载运算符
- keras - 将输入与 keras 中的常量向量连接起来。如何定义batch_size
- azure-devops - 将 PFX 添加到 VSTS 上的强名称 CSP
- office-js - 在 Windows Server 上加载 Word 加载项
- docker - 詹金斯:从奴隶推送到 ECR