Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Menyelesaikan Ralat 'Tidak dapat melakukan kemas kini keadaan React pada komponen yang tidak dipasang'?

Bagaimana untuk Menyelesaikan Ralat 'Tidak dapat melakukan kemas kini keadaan React pada komponen yang tidak dipasang'?

Barbara Streisand
Lepaskan: 2024-12-13 14:40:19
asal
435 orang telah melayarinya

How to Solve the

Tidak Dapat Melakukan Kemas Kini Keadaan Reaksi pada Komponen Tidak Dilekapkan

Masalah

Bila bekerja dengan React, adalah mungkin untuk menemui mesej ralat "Tidak dapat melakukan kemas kini keadaan React pada yang tidak dipasang komponen." Ralat ini biasanya berlaku apabila anda cuba mengemas kini keadaan komponen selepas ia dinyahlekap daripada DOM.

Mengenal pasti Komponen yang Menyinggung

Daripada surih tindanan, anda boleh mengenal pasti komponen yang bertanggungjawab untuk ralat dengan menjejak kembali timbunan panggilan untuk mencari komponen yang dipanggil setState(...) selepas ia dinyahlekapkan. Komponen yang menyinggung perasaan akan disenaraikan dalam surih tindanan sebagai componentName.prototype.setState.

Menyelesaikan Masalah

Untuk membetulkan ralat ini, terdapat beberapa pendekatan yang boleh anda ambil :

  1. Batalkan Tugasan Tak Segerak: Jika anda mempunyai sebarang tugas tak segerak, seperti pengambilan atau tamat masa, berjalan dalam komponen, batalkannya dalam kaedah componentWillUnmount. Tugasan ini boleh terus dijalankan selepas komponen dinyahlekap, menyebabkan kemas kini keadaan berlaku pada komponen yang tidak dilekapkan.
  2. Kemas Kini Negeri Jaga: Balut kemas kini keadaan dalam semakan bersyarat yang memastikan komponen berada masih dipasang sebelum mengemas kini keadaannya. Contohnya:
if (this.isMounted) {
  this.setState({ ... });
}
Salin selepas log masuk
  1. Gunakan React Hooks: Jika anda menggunakan React Hooks, anda boleh menggunakan fungsi pembersihan dalam useEffect hook untuk membatalkan sebarang asynchronous tugasan dan togol bendera pelekap. Ini memastikan kemas kini keadaan hanya berlaku semasa komponen dipasang.

Contoh (React Hooks)

useEffect(() => {
  let isMounted = true;
  const fetchData = async () => {
    try {
      const data = await fetch('...');
      if (isMounted) setState(data);
    } catch (error) {
      console.error(error);
    }
  };
  fetchData();
  return () => { isMounted = false; };
}, []);
Salin selepas log masuk

Dengan melaksanakan salah satu pendekatan ini, anda boleh menghalang ralat "Tidak dapat melakukan kemas kini keadaan React pada komponen yang tidak dipasang" dan memastikan bahawa pengurusan keadaan anda selaras dengan komponen kitaran hayat.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'Tidak dapat melakukan kemas kini keadaan React pada komponen yang tidak dipasang'?. 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