Tidak dapat menambah identiti harta: Objek tidak boleh dipanjangkan
P粉338969567
P粉338969567 2023-09-19 13:41:04
0
2
648

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粉338969567
P粉338969567

membalas semua(2)
P粉052724364

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粉436410586

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan