Bagaimana untuk Mengemas kini Objek Bersarang dalam Keadaan Menggunakan `setState`?

Mary-Kate Olsen
Lepaskan: 2024-11-04 03:34:30
asal
267 orang telah melayarinya

How to Update a Nested Object in State Using `setState`?

Kemas kini state.item[1] dalam keadaan menggunakan setState

Dalam situasi ini, anda cuba mengemas kini objek dalam objek dalam keadaan anda menggunakan setState. Untuk mengemas kini keadaan dengan betul, anda perlu membuat salinan keseluruhan objek keadaan, mengubah suai salinan dan kemudian menetapkan keadaan kepada salinan yang dikemas kini.

Berikut ialah cara anda boleh mengemas kini state.item[1] menggunakan setState:

<code class="javascript">// 1. Make a shallow copy of the items
let items = [...this.state.items];

// 2. Make a shallow copy of the item you want to mutate
let item = {...items[1]};

// 3. Replace the property you're interested in
item.name = 'newName';

// 4. Put it back into our array. N.B. we *are* mutating the array here, 
//    but that's why we made a copy first
items[1] = item;

// 5. Set the state to our new copy
this.setState({items});</code>
Salin selepas log masuk

Anda boleh menggabungkan langkah 2 dan 3 jika anda mahu:

<code class="javascript">let item = {
    ...items[1],
    name: 'newName'
}</code>
Salin selepas log masuk

Atau anda boleh melakukan semuanya dalam satu baris:

<code class="javascript">this.setState(({items}) => ({
    items: [
        ...items.slice(0,1),
        {
            ...items[1],
            name: 'newName',
        },
        ...items.slice(2)
    ]
}));</code>
Salin selepas log masuk

Nota: Dalam contoh ini, kami menganggap item ialah tatasusunan. Jika item ialah objek, anda akan membuat kemas kini yang serupa pada sifat objek.

Ingat, apabila menggunakan setState, anda harus sentiasa membuat salinan keadaan sebelumnya sebelum mengubah suainya untuk memastikan anda tidak bermutasi secara tidak sengaja objek keadaan asal.

Atas ialah kandungan terperinci Bagaimana untuk Mengemas kini Objek Bersarang dalam Keadaan Menggunakan `setState`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan