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

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

Linda Hamilton
Lepaskan: 2024-10-24 06:08:30
asal
711 orang telah melayarinya

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);
}
...
Salin selepas log masuk

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
);
Salin selepas log masuk

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!

sumber:php
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