Rumah  >  Artikel  >  hujung hadapan web  >  Mengapakah useState() Mencetuskan Render Berganda dalam Mod Pembangunan React?

Mengapakah useState() Mencetuskan Render Berganda dalam Mod Pembangunan React?

Linda Hamilton
Linda Hamiltonasal
2024-10-24 06:08:30646semak imbas

Why Does useState() Trigger Double Renders in React's Development Mode?

Mengapa useState() Menyebabkan Render Berganda dalam Mod Pembangunan?

Dalam React, menggunakan useState untuk pengurusan negeri boleh mencetuskan dua pemaparan semasa keadaan kemas kini. Tingkah laku ini dikaitkan dengan Mod Ketat React, yang meningkatkan penyahpepijatan pembangunan dengan mensimulasikan potensi kesan sampingan.

Pertimbangkan coretan kod berikut:

import React, { useState } from "react";
...
const [number, setNumber] = useState(0);
...
function changeNumber() {
    setNumber(state => state + 1);
}
...

Apabila mengklik butang yang mencetuskan fungsi changeNumber, anda boleh memerhatikan dua log konsol yang memberi isyarat komponen dipaparkan semula. Ini disebabkan oleh Mod Ketat, yang memaksa fungsi seperti pengemas kini useState untuk melaksanakan dua kali dalam persekitaran pembangunan.

Dokumentasi React menjelaskan bahawa Mod Ketat mengesan dan menyerlahkan kesan sampingan yang berpotensi dengan menggunakan semula fungsi tertentu secara sengaja, termasuk fungsi pengemas kini keadaan seperti yang diluluskan untuk useState. Matlamatnya adalah untuk memudahkan penyahpepijatan dan memastikan tingkah laku yang menentukan.

Untuk mengurangkan pemaparan berganda ini, anda boleh melumpuhkan Mod Ketat dengan mengalih keluar kod berikut daripada titik masuk aplikasi anda:

ReactDOM.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
  rootElement
);

Atas ialah kandungan terperinci Mengapakah useState() Mencetuskan Render Berganda dalam Mod Pembangunan React?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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