Rumah > Artikel > hujung hadapan web > Adakah Pendengar Acara React Memaparkan Perubahan Keadaan Tidak Dijangka dalam Komponen Fungsi?
Dalam pertanyaan ini, kami menghadapi masalah semasa bekerja dengan React Hooks. Apabila menggunakan pendengar acara untuk mengendalikan klik butang, log konsol memaparkan keadaan yang salah.
Dalam Kotak CodeSandbox yang disediakan, ikuti langkah berikut :
Tingkah laku ini tidak dijangka, kerana "Butang2" untuk kad pertama juga harus memaparkan kehadiran dua kad.
Isu ini berpunca daripada pengendalian pengendali acara yang berbeza dalam komponen CardsProvider dan Kad.
Mengatasi masalah ini memerlukan pertimbangan yang teliti pendekatan pengendalian peristiwa dalam komponen berfungsi menggunakan cangkuk useState. Berikut ialah beberapa pilihan:
1. Keadaan Boleh Ubah:
Gunakan useRef dan bukannya useState untuk memperkenalkan objek boleh ubah yang memegang keadaan semasa. Walaupun pendekatan ini membenarkan mutasi keadaan langsung, ia bertentangan dengan amalan yang disyorkan untuk pembangunan React.
2. Fungsi Pengemaskini Negeri:
Apabila pendengar acara didaftarkan, lulus fungsi pengemas kini keadaan yang menerima keadaan baharu dan bukannya keadaan lapuk daripada skop yang dilampirkan. Ini memastikan pendengar acara sentiasa mempunyai akses kepada keadaan yang paling terkini.
3. Pendaftaran Semula Pendengar Acara Manual:
Daftar semula pendengar acara setiap kali keadaan berubah. Ini memastikan panggilan balik sentiasa menerima maklumat keadaan terkini.
4. Pengendalian Acara Terbina Dalam:
Untuk pendengar acara dalam skop komponen, gunakan pengendalian acara terbina dalam React dengan mentakrifkan pendengar acara secara langsung dalam JSX. Ini menghapuskan keperluan untuk useEffect dan memastikan pendengar acara sentiasa menerima keadaan semasa.
Atas ialah kandungan terperinci Adakah Pendengar Acara React Memaparkan Perubahan Keadaan Tidak Dijangka dalam Komponen Fungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!