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

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

Linda Hamilton
Linda HamiltonOriginal
2024-10-24 06:08:30646Durchsuche

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);
}
...

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
);

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!

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