当我在formik内部调用我的突变函数时,args不会赋值。它总是空的。我想知道为什么会发生这种情况,我也尝试使用useState
钩子将args从formik传递到useMutation
钩子,但什么都不起作用。我错过了什么?
使用突变:
const changePasswordOnClick = useMutation<Record<string, string>, undefined, ChangePassword>(
() => axios.post(
url,
{email: '', password:'', new_password: ''},
),
{
onSuccess: (req) => {
console.log('Success!!!!', req)
},
onError: (req) => {
console.log('onError', req);
},
},
);
formik:
<Formik initialValues={{password: '', email: '', new_password:'' }}
validationSchema={validateSchema}
onSubmit={async (data,{setSubmitting, resetForm})=>{
setSubmitting(true)
changePasswordOnClick.mutate({
email:data.email, // always empty, why?
password: data.password, //always empty, why?
new_password: data.new_password //always empty, why?
})
console.log('Submit', data) // has data
setSubmitting(false)
closeModalWindow.current.click()
resetForm()
}}>
我想明白了。需要划分axios并响应查询
第一个(接受args的axios函数(
const setNewPassword = (email, password, new_password) => axios.post(url,
第二个(使用突变挂钩(
const changePasswordOnClick = useMutation(setNewPassword, {
onSuccess:(data)=>{
console.log(data);
}
})
Formik(形式(
<Formik initialValues={{password:'', email: '', new_password:'' }}
validationSchema={validateSchema}
onSubmit={(values,{setSubmitting, resetForm})=>{
setSubmitting(true)
changePasswordOnClick.mutate({
email:values.email,
password: values.password
new_password:values.new_password})
setSubmitting(false)
resetForm()
}}