„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum verursachen Pfeilfunktionen und Bindung Leistungsprobleme in JSX-Requisiten?

Warum verursachen Pfeilfunktionen und Bindung Leistungsprobleme in JSX-Requisiten?

Veröffentlicht am 22.11.2024
Durchsuche:686

Why Do Arrow Functions and Bind Cause Performance Issues in JSX Props?

Vermeiden Sie Pfeilfunktionen und binden Sie in JSX-Requisiten für optimale Leistung

Das Lint-Tool von React zielt darauf ab, Codepraktiken zu verbessern, indem es potenzielle Probleme hervorhebt. Eine häufige Fehlermeldung lautet: „JSX-Requisiten sollten keine Pfeilfunktionen verwenden.“ Dies weist auf die nachteiligen Auswirkungen der Verwendung von Pfeilfunktionen oder Bindung innerhalb von JSX-Requisiten hin.

Warum Pfeilfunktionen und Bindung die Leistung beeinträchtigen

Die Integration von Pfeilfunktionen oder Bindung in JSX-Requisiten hat Auswirkungen Auswirkungen auf die Leistung:

  • Garbage Collection: Jedes Mal ein Pfeil Wenn eine Funktion erstellt wird, wird die vorherige verworfen. Wenn mehrere Elemente mit Inline-Funktionen gerendert werden, kann dies zu abgehackten Animationen führen.
  • Rendern: Inline-Pfeilfunktionen beeinträchtigen die flachen Vergleichsmechanismen, die von PureComponents und Komponenten verwendet werden, die die Methode ShouldComponentUpdate verwenden. Da die Pfeilfunktions-Requisite jedes Mal neu erstellt wird, wird sie als Requisitenänderung erkannt, was ein unnötiges erneutes Rendern auslöst.

Auswirkungen von Inline-Handlern auf das erneute Rendern

Bedenken diese Beispiele:

Beispiel 1: PureComponent ohne Inline Handler

class Button extends React.PureComponent {
  render() {
    const { onClick } = this.props;
    console.log('render button');
    return ;
  }
}

In diesem Code wird die Button-Komponente nur dann neu gerendert, wenn sich ihre Requisiten ändern, wie es für eine PureComponent erwartet wird.

Beispiel 2: PureComponent mit Inline-Handler

const Button = (props) => {
  console.log('render button');
  return ;
};

Aufgrund der Inline-Pfeilfunktion wird Button jetzt jedes Mal neu gerendert, auch wenn der Komponentenstatus unverändert bleibt. Dieses unnötige erneute Rendern kann die Leistung erheblich beeinträchtigen.

Best Practices

Um diese Leistungsprobleme zu vermeiden, wird empfohlen, die folgenden Best Practices einzuhalten:

  • Definieren Sie Ihre Event-Handler außerhalb von JSX: Extrahieren Sie Pfeilfunktionen oder binden Sie Methoden in separate Variablen Deklarationen.
  • Verwenden Sie diese Bindung: Binden Sie für Klassenkomponenten Event-Handler im Konstruktor daran.
  • Verwenden Sie Funktionen höherer Ordnung: Bedenken Sie Verwenden von Funktionen höherer Ordnung wie Map oder bindActionCreators für eine effizientere Ereignisbehandlung in JSX.
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3