Bagaimana untuk Mengemas kini `state.item[1]` dengan `setState` dalam React?

Linda Hamilton
Lepaskan: 2024-11-02 16:07:02
asal
637 orang telah melayarinya

How to Update `state.item[1]` with `setState` in React?

Cara Mengemas kini State.item[1] Menggunakan setState

Dalam aplikasi React, mengemas kini keadaan tatasusunan atau objek boleh menjadi rumit. Artikel ini akan memandu anda melalui 如何更新 state.item[1] dalam keadaan menggunakan setState, tugas biasa dalam React.

Masalah

Dalam komponen React yang disediakan, matlamatnya adalah untuk mencipta bentuk dinamik di mana pengguna boleh mereka bentuk medan mereka sendiri. Keadaan pada mulanya kelihatan seperti ini:

this.state.items[1] = {
  name: 'field 1',
  populate_at: 'web_start',
  same_as: 'customer_name',
  autocomplete_from: 'customer_name',
  title: ''
};
Salin selepas log masuk

Isu timbul apabila cuba mengemas kini keadaan apabila pengguna menukar mana-mana nilai. Menyasarkan objek yang betul menjadi sukar.

Penyelesaian

Untuk mengemas kini keadaan dengan betul, ikut langkah berikut:

  1. Buat salinan cetek item.
  2. Buat salinan cetek bagi item yang ingin anda mutasi.
  3. Ganti harta yang anda minati masuk.
  4. Letakkannya semula ke dalam tatasusunan anda. Ambil perhatian bahawa anda sedang memutasi tatasusunan di sini, itulah sebabnya membuat salinan dahulu adalah penting.
  5. Tetapkan keadaan kepada salinan baharu anda.

Contoh Pelaksanaan:

handleChange: function (e) {
  // 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 intested 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});
}
Salin selepas log masuk

Alternatif Pelaksanaan:

  • Menggabungkan langkah 2 dan 3:
let item = {...items[1], name: 'newName'}
Salin selepas log masuk
  • Pelaksanaan satu baris:
this.setState(({items}) => ({
  items: [
    ...items.slice(0, 1),
    {...items[1], name: 'newName'},
    ...items.slice(2)
  ]
}));
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mengemas kini `state.item[1]` dengan `setState` dalam React?. 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