reagieren Sie Memo: Boosting React Performance mit einfacher Memoisierung
Reag-Anwendungen befassen sich häufig mit großen Datensätzen und komplexen Komponenten, in denen unnötige Wiederholer die Leistung erheblich beeinflussen können. Um dies zu beheben, bietet React React.Memo - ein einfaches, aber leistungsstarkes Tool, um Komponenten zu optimieren und die Renderzeiten zu verkürzen. In dieser Anleitung werden wir untersuchen, wie React Memo funktioniert, warum es nützlich ist und wie es Schritt für Schritt implementiert wird.
react.memo ist eine Komponente höherer Ordnung (HOC) in React, die bei der Memoisierung funktioneller Komponenten hilft. Bei der Memoisierung wird der Ausgang der Ausgabe einer Funktion basierend auf ihren Eingängen zwischengespeichert, sodass die Funktion das Ergebnis für dieselben Eingänge nicht neu berechnen muss. React Memo funktioniert ähnlich: Es erinnert sich an die zuletzt gerenderte Ausgabe einer Komponente und rägt sie nur erneut, wenn sich ihre Requisiten ändern.
In React werden die Komponenten wieder rendern, wenn ihre übergeordneten Komponenten erneut rendern. Dies kann zu Ineffizienzen führen, wenn die Ausgabe einer Komponente nicht von den Änderungen seiner Eltern abhängt. In komplexen Benutzeroberflächen mit vielen Komponenten könnten Sie beispielsweise eine Verzögerung aufgrund übermäßiger Wiedererleber sehen. Die Verwendung von React -Memo kann dies optimieren, indem nur bei Bedarf Komponenten aktualisiert werden.
Wenn eine übergeordnete Komponente erneut ausgereift wird, werden auch seine untergeordneten Komponenten wieder rendern. Dies kann zu Engpässen von Leistung führen, insbesondere wenn Komponenten statische Daten anzeigen oder sich auf unveränderliche Requisiten verlassen.
Anwendungen mit tief verschachtelten Komponenten können aufgrund kumulativer Neubindungen eine langsame Leistung ausgesetzt sein. Memoisierung mit React-Memo hilft bei der Verhinderung von Wiederherstellungen von Komponenten, die keine Aktualisierungen erfordern und die Reaktionsfähigkeit der App verbessern.
Lassen Sie uns eine grundlegende Implementierung von React Memo durchlaufen. Wir beginnen mit einer einfachen Komponente, die keine Memoisierung verwendet, und sehen, wie das Hinzufügen von React -Memo einen Unterschied macht.
import React, { useState } from 'react'; function Counter({ count }) { console.log('Counter component re-rendered'); returnCount: {count}
; } function App() { const [count, setCount] = useState(0); const [text, setText] = useState(''); return (); } export default App;setText(e.target.value)} placeholder="Type something..." />
In diesem Beispiel, jedes Mal, wenn Sie das Eingabefeld eingeben, bleibt die Re-Rehverschlüsse der Zählerkomponente, obwohl der Zählwert gleich bleibt. Dies ist ein unnötiger Neurender, den wir mit React Memo verhindern können.
Jetzt wickeln wir die Zählerkomponente mit react.memo ein, um sie zu optimieren.
import React, { useState } from 'react'; const Counter = React.memo(function Counter({ count }) { console.log('Counter component re-rendered'); returnCount: {count}
; }); function App() { const [count, setCount] = useState(0); const [text, setText] = useState(''); return (); } export default App;setText(e.target.value)} placeholder="Type something..." />
Mit react.memo wechselt die Zählerkomponente nur wieder, wenn sich ihre Anzahl von Requisiten ändert. Das Eingeben im Eingabefeld löst nun keine Wiederholung des Zählers mehr aus, wodurch die Leistung erheblich optimiert wird.
Lassen Sie uns in ein komplexeres Beispiel eintauchen, um die wirklichen Vorteile von React Memo zu sehen. Angenommen, wir haben eine Liste von Elementen mit einer Schaltfläche "Gefällt mir" neben jedem Element. Wir werden demonstrieren, wie React Memo übermäßige Wiedererleber verhindern kann, wenn sie einzelne Elemente mögen.
import React, { useState } from 'react'; function Item({ item, onLike }) { console.log(`Rendering ${item.name}`); return (); } function ItemList() { const [items, setItems] = useState([ { id: 1, name: 'Item 1', likes: 0 }, { id: 2, name: 'Item 2', likes: 0 }, { id: 3, name: 'Item 3', likes: 0 }, ]); const handleLike = (id) => { setItems((prevItems) => prevItems.map((item) => item.id === id ? { ...item, likes: item.likes 1 } : item ) ); }; return ({item.name}
{items.map((item) => (); } export default ItemList;- ))}
Im obigen Code, wenn Sie einen Element mögen, ändern sich alle Elemente neu, obwohl sich nur der Element ändern.
const Item = React.memo(function Item({ item, onLike }) { console.log(`Rendering ${item.name}`); return (); });{item.name}
Nun wird nur der Artikel, den Sie mögen, wieder rendern und die Benutzeroberfläche viel schneller und effizienter macht.
React Memo ist in bestimmten Szenarien nützlich, aber überall kann es Ihren Code komplizieren, ohne einen echten Nutzen zu erzielen. Hier sind einige wichtige Situationen, in denen es besonders effektiv sein kann:
flaches Vergleich : React Memo führt einen flachen Vergleich durch, was bedeutet, dass es keine Änderungen in tief verschachtelten Objekten oder Arrays erkennt. Erwägen Sie, Usememo oder Usecallback zu verwenden, wenn Sie komplexe Requisiten übergeben.
Performance Monitoring : Verwenden Sie React DevTools, um zu identifizieren, welche Komponenten tatsächlich von der Memoisierung profitieren. Überbeanspruchung von React Memo kann zu Codekomplexität mit vernachlässigbaren Leistungsgewinnen führen.
Nein, React Memo ist nur für funktionale Komponenten. Für Klassenkomponenten kann jedoch ein ähnliches Verhalten mit PureComponent erreicht werden.
.React Memo ist ein wertvolles Instrument, um unnötige Wiederherstellungen zu reduzieren und die Anwendungsleistung zu steigern. Indem Sie es selektiv in reinen Funktionskomponenten oder statischen UI -Elementen verwenden, können Sie Ihre React -App optimieren, ohne die Struktur zu erschweren. Befolgen Sie diese Schritte, probieren Sie die Beispiele aus und experimentieren Sie weiter, um die besten Memoisierungsstrategien für Ihr Projekt zu finden!
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