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>
Anda boleh menggabungkan langkah 2 dan 3 jika anda mahu:
<code class="javascript">let item = { ...items[1], name: 'newName' }</code>
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>
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!