Saya menghadapi TypeError yang mudah semasa cuba menyediakan badan permintaan POST saya.
Ini penangan sayaSubmit fungsi:
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'))); };
Saya melihat banyak soalan yang serupa tetapi tidak menemui jawapan yang betul. Adakah anda mempunyai sebarang idea? Terima kasih
Mungkin anda patut mengisytiharkan objek prepareBody secara berbeza?
}
Dan jangan lupa untuk menyemak sifat dalam objek:
Atau gunakan penstrukturan:
} = nilai || {};
Apabila anda bermula dari
formik
库中获取的表单值是 不可扩展的。当你执行const prepareBody = { ...values.customerCase};
, anda mencipta objek yang mengandungi salinan semua nilai asal, tetapi rujukan kepada nilai bukan primitif (seperti objek) ditambah, itulah sebabnya anda tidak boleh memanjangkannya.Untuk dapat mengubah suainya, anda perlu mencipta salinan mendalam daripada
values.customerCase
. Kini, standard Javascript menyediakan kaedah structuredClone untuk membantu anda mencapai matlamat ini.