Ich bin auf einen einfachen TypeError gestoßen, als ich versuchte, meinen POST-Anfragetext vorzubereiten.
Das ist meine handleSubmit-Funktion:
const handleSubmit = (values: any, formikHelpers: FormikHelpers<any>) => { const prepareBody = { ...values.customerCase}; if (type === '1') { console.log(prepareBody); prepareBody.case.identity= {}; // 即使我删除这一行也会出错 prepareBody.case.identity.title = values.customerCase.customer.contact.title; prepareBody.case.identity.firstName = values.customerCase.customer.contact.firstName; prepareBody.case.identity.lastName = values.customerCase.customer.contact.lastName ; prepareBody.case.type = type; } PostCustomer({ reference: props.reference, body: prepareBody, }) .unwrap() .then(() => { formikHelpers.resetForm(); history.push('/success'); }) .catch(() => alertToasts('error', t('toast.error'))); };
Ich habe viele ähnliche Fragen gesehen, aber nicht die richtige Antwort gefunden. Hast du eine Idee? Danke
也许你应该以不同的方式声明prepareBody对象?
}
并且不要忘记检查对象中的属性:
或者使用解构:
} = values || {};
你从
formik
库中获取的表单值是 不可扩展的。当你执行const prepareBody = { ...values.customerCase};
时,你创建了一个对象,其中包含所有 原始值 的副本,但是对于非原始值(比如对象)的引用被添加进去了,这就是为什么你无法扩展它的原因。要能够修改它,你需要创建一个 深拷贝 的
values.customerCase
。现在,Javascript 标准提供了 structuredClone 方法来帮助你实现这一点。