Rumah > hujung hadapan web > tutorial js > Mengapa `setState` Tidak Kemas Kini Keadaan Komponen React Serta-merta?

Mengapa `setState` Tidak Kemas Kini Keadaan Komponen React Serta-merta?

Patricia Arquette
Lepaskan: 2024-12-20 18:10:19
asal
632 orang telah melayarinya

Why Doesn't `setState` Immediately Update React Component State?

Mengapa Memanggil Kaedah setState Tidak Mengubah Keadaan Serta-merta?

Dalam React, kaedah setState ialah fungsi tak segerak yang digunakan untuk menetapkan keadaan komponen. Ini bermakna keadaan tidak dikemas kini serta-merta selepas memanggil setState. Ini kerana setState mencetuskan pemaparan semula komponen, yang boleh menjadi operasi yang mahal. Untuk mengelak daripada membuat penyemak imbas tidak bertindak balas, panggilan setState dikumpulkan dan dilaksanakan kemudian.

Sifat Asynchronous setState

Menurut dokumentasi React: "setState() tidak segera mengubah keadaan ini, tetapi mewujudkan peralihan keadaan yang belum selesai." Oleh itu, mengakses this.state selepas memanggil setState masih boleh mengembalikan nilai sedia ada.

Panggilan setState Berkelompok

Untuk pengoptimuman prestasi, berbilang panggilan setState mungkin digabungkan bersama dan dilaksanakan dalam satu pemaparan semula . Ini menghalang pemaparan semula yang tidak perlu dan meningkatkan responsif UI.

Menggunakan Panggilan Balik

Untuk mengakses nilai keadaan yang dikemas kini selepas setState, anda boleh menggunakan fungsi panggil balik sebagai argumen kedua. Panggilan balik ini akan dilaksanakan selepas keadaan dikemas kini:

setState({ key: value }, () => {
    console.log('updated state value', this.state.key)
});
Salin selepas log masuk

Contoh

Pertimbangkan contoh berikut:

class NightlifeTypes extends React.Component {
   handleOnChange = (event) => {
      let value = event.target.checked;

      if(event.target.className == "barClubLounge") {
         this.setState({ barClubLounge: value}, () => { 
             console.log(value);
             console.log(this.state.barClubLounge);
             //both will print same value
         });        
      }
   }
}
Salin selepas log masuk

Dalam contoh ini, fungsi handleOnChange ditetapkan sifat keadaan barClubLounge kepada argumen nilai. Fungsi panggil balik dalam panggilan setState memastikan bahawa log konsol akan memaparkan nilai keadaan yang dikemas kini.

Atas ialah kandungan terperinci Mengapa `setState` Tidak Kemas Kini Keadaan Komponen React Serta-merta?. 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