Heim > Web-Frontend > js-Tutorial > Warum löst useState() doppelte Renderings im Entwicklungsmodus von React aus?

Warum löst useState() doppelte Renderings im Entwicklungsmodus von React aus?

Linda Hamilton
Freigeben: 2024-10-24 06:08:30
Original
708 Leute haben es durchsucht

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

Warum verursacht useState() doppelte Renderings im Entwicklungsmodus?

In React kann die Verwendung von useState für die Statusverwaltung während des Status zwei Renderings auslösen Aktualisierungen. Dieses Verhalten ist auf den strengen Modus von React zurückzuführen, der das Entwicklungs-Debugging durch die Simulation potenzieller Nebenwirkungen verbessert.

Beachten Sie den folgenden Codeausschnitt:

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

Wenn Sie auf die Schaltfläche klicken, die die Funktion „changeNumber“ auslöst, Möglicherweise beobachten Sie zwei Konsolenprotokolle, die das erneute Rendern von Komponenten signalisieren. Dies liegt am Strict Mode, der Funktionen wie useState Updater dazu zwingt, in Entwicklungsumgebungen zweimal ausgeführt zu werden.

In der Dokumentation von React wird erklärt, dass der Strict Mode potenzielle Nebenwirkungen erkennt und hervorhebt, indem bestimmte Funktionen, einschließlich State Updater-Funktionen, absichtlich erneut aufgerufen werden wie die, die an useState übergeben wurden. Das Ziel besteht darin, das Debuggen zu erleichtern und deterministisches Verhalten sicherzustellen.

Um dieses doppelte Rendering abzumildern, können Sie den strikten Modus deaktivieren, indem Sie den folgenden Code vom Einstiegspunkt Ihrer Anwendung entfernen:

ReactDOM.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
  rootElement
);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum löst useState() doppelte Renderings im Entwicklungsmodus von React aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage