Bagaimana untuk Mencegah useEffect daripada Berjalan pada Render Awal dalam React?

Barbara Streisand
Lepaskan: 2024-11-26 20:03:10
asal
940 orang telah melayarinya

How to Prevent useEffect from Running on Initial Render in React?

Menghalang useEffect Hook daripada Berjalan pada Initial Render

Dalam React, useEffect hook menyediakan fungsi yang serupa dengan kaedah kitaran hayat componentDidUpdate. Walau bagaimanapun, tidak seperti componentDidUpdate, useEffect berjalan selepas setiap render, termasuk render awal. Ini boleh menjadi gelagat yang tidak diingini apabila kita hanya mahu kesan dijalankan selepas kemas kini berikutnya.

Untuk mengelakkan useEffect daripada dijalankan pada pemaparan awal, kita boleh memanfaatkan dua pendekatan:

Menggunakan useRef Hook

useRef Hook membolehkan kami menyimpan nilai boleh ubah yang berterusan antara pemaparan. Kami boleh menggunakannya untuk menjejaki sama ada ini kali pertama fungsi useEffect sedang digunakan.

const firstUpdate = useRef(true);
useLayoutEffect(() => {
  if (firstUpdate.current) {
    firstUpdate.current = false;
    return;
  }

  // Run the effect after the initial render
  console.log("useEffect ran after first render");
}, []);
Salin selepas log masuk

Menggunakan useLayoutEffect Hook

Sebagai alternatif, kita boleh menggunakan useLayoutEffect cangkuk. Tidak seperti useEffect, useLayoutEffect berjalan serentak selepas kemas kini DOM berlaku, yang merupakan tingkah laku yang sama seperti componentDidUpdate.

useLayoutEffect(() => {
  // Run the effect after the initial render
  console.log("useLayoutEffect ran after first render");
}, []);
Salin selepas log masuk

Pendekatan ini berkesan menghalang useEffect daripada berjalan pada pemaparan awal, memastikan kesan hanya berlaku selepas yang berikutnya kemas kini, sama seperti componentDidUpdate.

Atas ialah kandungan terperinci Bagaimana untuk Mencegah useEffect daripada Berjalan pada Render Awal 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