Rumah > Soal Jawab > teks badan
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
P粉0527243642023-09-20 00:51:29
Mungkin anda patut mengisytiharkan objek prepareBody secara berbeza?
const prepareBody ={ case: { identity: { title: null, firstName: null, lastName: null }, type: null }, ...values.customerCase
}
Dan jangan lupa untuk menyemak sifat dalam objek:
values?.customerCase?.customer?.contact?.title
Atau gunakan penstrukturan:
const { customerCase: { customer: { contact: { title, firstName, lastName } } }
} = nilai || {};
P粉4364105862023-09-20 00:05:29
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.