Saya menghadapi TypeError yang mudah semasa cuba menyediakan badan permintaan POST saya.
Ini penangan sayaSubmit fungsi:
const handleSubmit = (values: any, formikHelpers: FormikHelpers) => { 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 semuanilai asal, tetapi rujukan kepada nilai bukan primitif (seperti objek) ditambah, itulah sebabnya anda tidak boleh memanjangkannya.Untuk dapat mengubah suainya, anda perlu menciptasalinan mendalamdaripada
values.customerCase
. Kini, standard Javascript menyediakan kaedahstructuredCloneuntuk membantu anda mencapai matlamat ini.