Heim  >  Artikel  >  Web-Frontend  >  Warum sollten Sie die Verwendung von Pfeilfunktionen oder Bind in JSX-Requisiten vermeiden?

Warum sollten Sie die Verwendung von Pfeilfunktionen oder Bind in JSX-Requisiten vermeiden?

Susan Sarandon
Susan SarandonOriginal
2024-11-06 21:49:02361Durchsuche

Why Should You Avoid Using Arrow Functions or Bind in JSX Props?

Vermeiden Sie die Verwendung von Pfeilfunktionen oder Bind in JSX-Requisiten

Warum es eine schlechte Vorgehensweise ist:

Von der Verwendung von Pfeilfunktionen oder Bind in JSX-Requisiten wird abgeraten, da sich dies negativ auf die Leistung auswirkt. Hier sind die Gründe:

  • Ineffiziente Garbage Collection: Das Erstellen von Funktionen bei jedem Rendering löst unnötige Garbage Collection aus, wenn die Bereitstellung der Komponente aufgehoben wird.
  • Renders aufgrund von Flacher Vergleich: PureComponents und Komponenten, die ShallowCompare in ShouldComponentUpdate() verwenden, werden erneut gerendert, auch wenn der Prop-Wert unverändert bleibt, da die Die Inline-Funktionsstütze wird jedes Mal neu erstellt.

Beispiel:

Ohne Inline-Pfeilfunktion:

<Button onClick={() => console.log('clicked')} />

Die Schaltfläche wird nicht erneut gerendert, es sei denn, ihre anderen Requisiten ändern sich.

Mit Inline Pfeilfunktion:

<Button onClick={this.handleClick} />

Die Schaltfläche wird jedes Mal neu gerendert, wenn die Komponente gerendert wird, auch wenn der Handler derselbe bleibt.

Best Practice:

Um diese Leistungsprobleme zu vermeiden, deklarieren Sie Pfeilfunktionen oder gebundene Methoden außerhalb von JSX:

class Button extends React.Component {
  handleClick = () => {
    // Handler logic
  };

  render() {
    return <button onClick={this.handleClick} />;
  }
}

Das obige ist der detaillierte Inhalt vonWarum sollten Sie die Verwendung von Pfeilfunktionen oder Bind in JSX-Requisiten vermeiden?. 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