Heim  >  Artikel  >  Web-Frontend  >  Optimierung der Leistung in Reaktionsanwendungen

Optimierung der Leistung in Reaktionsanwendungen

王林
王林Original
2024-09-12 10:32:121001Durchsuche

Optimizing Performance in React Applications

Leistung ist ein entscheidender Aspekt der Webentwicklung, insbesondere in React-Anwendungen, bei denen die Benutzeroberfläche sehr dynamisch ist. In diesem Blogbeitrag teile ich einige Strategien und Best Practices, die Ihnen dabei helfen können, Ihre React-Apps zu optimieren, um sicherzustellen, dass sie reibungslos funktionieren, schnell geladen werden und ein besseres Benutzererlebnis bieten.


1. Auswendiglernen mit React.memo()

React rendert Komponenten standardmäßig neu, auch wenn sich ihre Requisiten nicht geändert haben. Dies kann zu unnötigen erneuten Renderings führen und die Leistung beeinträchtigen. Um dies zu verhindern, können wir React.memo() verwenden, um funktionale Komponenten auswendig zu lernen. Es weist React an, das Rendern einer Komponente zu überspringen, wenn sich ihre Requisiten nicht geändert haben.

const MyComponent = React.memo((props) => {
  // Your component logic
});

2. Verwenden Sie die Hooks useCallback und useMemo

Für Funktionen und berechnete Werte, die nur neu berechnet werden sollten, wenn sich bestimmte Abhängigkeiten ändern, sind die Hooks useCallback und useMemo großartige Werkzeuge.

  • useMemo wird verwendet, um teure Berechnungen zu speichern

  • useCallback wird verwendet, um Rückruffunktionen zu speichern

const memoizedCallback = useCallback(() => {
  doSomething();
}, [dependency]);
const memoizedValue = useMemo(() => computeExpensiveValue(), [dependency]);

3. Lazy Loading Komponenten

Bei größeren Apps kann das Laden aller Dateien auf einmal die Leistung beeinträchtigen. React bietet integrierte Unterstützung für Lazy Loading-Komponenten mithilfe von React.lazy() und Suspense. Mit diesem Ansatz können Sie Komponenten nur dann laden, wenn sie benötigt werden, wodurch die anfängliche Ladezeit verkürzt wird.

const LazyComponent = React.lazy(() => import('./LazyComponent'));
function MyApp() {
  return (
    <Suspense fallback={<div>Loading...</div>}>
      <LazyComponent />
    </Suspense>
  );
}

4. Optimieren Sie erneute Renderings mit shouldComponentUpdate und PureComponent

In klassenbasierten Komponenten kann die Verwendung von ShouldComponentUpdate unnötige erneute Renderings verhindern, indem sie die Kontrolle darüber bietet, wann die Komponente aktualisiert werden soll.

class MyComponent extends React.Component {
  shouldComponentUpdate(nextProps, nextState) {
    // Return true if the component should update
    return nextProps.someValue !== this.props.someValue;
  }
}

Alternativ können Sie React.PureComponent verwenden, um automatisch einen oberflächlichen Vergleich von Requisiten und Status durchzuführen und so ein erneutes Rendern zu verhindern, wenn keine Änderung erfolgt.

class MyPureComponent extends React.PureComponent {
  // This automatically prevents re-renders on shallow prop/state equality
}

5. Windowing/Lazy Rendering

Wenn Ihre App große Listen oder Tabellen rendern muss, kann sich das Rendern aller auf einmal auf die Leistung auswirken. Bibliotheken wie react-window und react-virtualized können helfen, indem sie nur die sichtbaren Teile der Liste rendern und so die Leistung erheblich verbessern.

import { FixedSizeList as List } from 'react-window';
const MyList = ({ items }) => (
  <List
    height={500}
    itemCount={items.length}
    itemSize={35}
    width={300}
  >
    {({ index, style }) => (
      <div style={style}>
        {items[index]}
      </div>
    )}
  </List>
);

6. Code-Splitting

Mit der Codeaufteilung können Sie Ihren Code in kleinere Pakete aufteilen, die bei Bedarf geladen werden. Dies kann die anfängliche Ladezeit drastisch verkürzen. Mit Tools wie Webpack und der integrierten Unterstützung von React für dynamische Importe können Sie die Codeaufteilung problemlos implementieren.

import('./MyComponent').then((module) => {
  const MyComponent = module.default;
  // Do something with MyComponent
});

7. Verwenden Sie ein CDN für statische Assets

Die Bereitstellung statischer Assets wie Bilder, Schriftarten und Stylesheets über ein Content Delivery Network (CDN) reduziert die Belastung Ihres Servers und beschleunigt die Bereitstellung dieser Assets an Benutzer.

8. Vermeiden Sie anonyme Funktionen in JSX

Jedes Mal, wenn eine Komponente erneut gerendert wird, werden neue Instanzen anonymer Funktionen erstellt, was zu potenziellen Leistungsproblemen führen kann. Definieren Sie stattdessen die Funktion außerhalb des JSX oder verwenden Sie useCallback, um sie sich zu merken.

// Avoid this
<button onClick={() => handleClick()}>Click Me</button>

// Do this instead
const handleClick = useCallback(() => {
  // Handle click
}, []);
<button onClick={handleClick}>Click Me</button>

9. Vermeiden Sie das übermäßige Abrufen von Daten

Das Abrufen unnötiger Daten kann die App verlangsamen, insbesondere in langsamen Netzwerken. Verwenden Sie Paginierung, unendliches Scrollen oder bedingten Datenabruf, um die vom Server abgerufene Datenmenge zu begrenzen.

10. Minimieren Sie die Versöhnung mit wichtigen Requisiten

Beim Rendern von Listen in React hilft die Bereitstellung eindeutiger Schlüssel-Requisiten React dabei, zu erkennen, welche Elemente geändert, hinzugefügt oder entfernt wurden, wodurch der Abgleichsaufwand minimiert und die Leistung verbessert wird.

{items.map(item => (
  <div key={item.id}>{item.name}</div>
))}

Abschluss

Bei der Optimierung der Leistung in React-Anwendungen geht es darum, zu verstehen, wie React Komponenten rendert, und unnötige erneute Renderings zu verwalten. Durch die Nutzung von Tools wie React.memo(), useCallback, useMemo, Lazy Loading und Code-Splitting können Sie die Leistung Ihrer React-Apps erheblich verbessern.

Denken Sie daran, dass das Ziel nicht darin besteht, alles vorzeitig zu optimieren, sondern dass Sie bei zunehmender Komplexität Ihrer App auf die Leistung achten müssen. Wenn Sie weitere Tipps zur Leistungsoptimierung für React haben, teilen Sie diese gerne in den Kommentaren mit!

Autor:
Rafi Ferdos - Portfolio

Das obige ist der detaillierte Inhalt vonOptimierung der Leistung in Reaktionsanwendungen. 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