„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 > Wesentliche Designmuster für React-Apps: Verbessern Sie Ihr Komponentenspiel

Wesentliche Designmuster für React-Apps: Verbessern Sie Ihr Komponentenspiel

Veröffentlicht am 28.09.2024
Durchsuche:351

Essential Design Patterns for React Apps: Leveling Up Your Component Game

Wenn Sie schon eine Weile in der React-Welt sind, haben Sie wahrscheinlich schon einmal den Satz „Es ist nur JavaScript“ gehört. Das stimmt zwar, heißt aber nicht, dass wir nicht von einigen bewährten Mustern profitieren können, um unsere React-Apps wartbarer, wiederverwendbarer und geradezu angenehmer zu machen. Lassen Sie uns in einige wesentliche Designmuster eintauchen, die Ihre React-Komponenten von „meh“ zu „wunderbar“ machen können!

Warum Designmuster in React wichtig sind

Bevor wir einsteigen, wollen wir uns mit dem Elefanten im Raum befassen: Warum sollte man sich überhaupt mit Designmustern beschäftigen? Nun, mein React-Enthusiast, Designmuster sind wie die Geheimrezepte der Programmierwelt. Es handelt sich um kampferprobte Lösungen für häufig auftretende Probleme, die:

  1. Machen Sie Ihren Code lesbarer und wartbarer
  2. Fördern Sie die Wiederverwendbarkeit in Ihrer gesamten Anwendung
  3. Komplexe Probleme mit eleganten Lösungen lösen
  4. Hilft Ihnen, Ideen effektiver mit anderen Entwicklern zu kommunizieren

Da wir uns nun auf dem gleichen Stand befinden, erkunden wir einige Muster, die Ihre React-Komponenten heller erstrahlen lassen als einen frisch gewachsten Sportwagen!

1. Das Komponentenzusammensetzungsmuster

Das Komponentenmodell von React ist an sich bereits ein leistungsstarkes Muster, aber wenn man es mit der Komposition noch einen Schritt weiter bringt, kann dies zu flexiblerem und wiederverwendbarerem Code führen.

// Instead of this:
const Button = ({ label, icon, onClick }) => (
  
);

// Consider this:
const Button = ({ children, onClick }) => (
  
);

const IconButton = ({ icon, label }) => (
  
);

Warum es großartig ist:

  • Flexiblere und wiederverwendbare Komponenten
  • Einfacher anzupassen und zu erweitern
  • Folgt dem Prinzip der Einzelverantwortung

Profi-Tipp: Betrachten Sie Ihre Komponenten als LEGO-Steine. Je modularer und zusammensetzbarer sie sind, desto erstaunlichere Strukturen können Sie bauen!

2. Das Container-/Präsentationsmuster

Dieses Muster trennt die Logik Ihrer Komponente von ihrer Präsentation und erleichtert so das Nachdenken und Testen.

// Container Component
const UserListContainer = () => {
  const [users, setUsers] = useState([]);

  useEffect(() => {
    fetchUsers().then(setUsers);
  }, []);

  return ;
};

// Presentational Component
const UserList = ({ users }) => (
  
    {users.map(user => (
  • {user.name}
  • ))}
);

Warum es rockt:

  • Klare Trennung der Belange
  • Einfacher zu testen und zu warten
  • Fördert die Wiederverwendbarkeit der Präsentationskomponente

Denken Sie daran: Container sind wie das Backstage-Team eines Theaterstücks, das die gesamte Arbeit hinter den Kulissen übernimmt, während Präsentationskomponenten die Schauspieler sind, die sich ausschließlich darauf konzentrieren, für das Publikum gut auszusehen.

3. Das HOC-Muster (Higher-Order Component).

HOCs sind Funktionen, die eine Komponente übernehmen und eine neue Komponente mit einigen zusätzlichen Funktionen zurückgeben. Sie sind wie Power-Ups für Ihre Komponenten!

const withLoader = (WrappedComponent) => {
  return ({ isLoading, ...props }) => {
    if (isLoading) {
      return ;
    }
    return ;
  };
};

const EnhancedUserList = withLoader(UserList);

Warum es cool ist:

  • Ermöglicht die Wiederverwendung von Code über verschiedene Komponenten hinweg
  • Hält Ihre Komponenten sauber und fokussiert
  • Kann für mehrere Erweiterungen zusammengestellt werden

Wort zur Vorsicht: Obwohl HOCs mächtig sind, können sie bei übermäßigem Gebrauch zur „Wrapper-Hölle“ führen. Setzen Sie sie mit Bedacht ein!

4. Das Render-Props-Muster

Bei diesem Muster wird eine Funktion als Requisite an eine Komponente übergeben, sodass Sie mehr Kontrolle darüber haben, was gerendert wird.

const MouseTracker = ({ render }) => {
  const [position, setPosition] = useState({ x: 0, y: 0 });

  const handleMouseMove = (event) => {
    setPosition({ x: event.clientX, y: event.clientY });
  };

  return (
    
{render(position)}
); }; // Usage (

The mouse is at ({x}, {y})

)} />

Warum es so praktisch ist:

  • Hochflexibel und wiederverwendbar
  • Vermeidet Probleme mit HOCs wie Kollisionen bei der Benennung von Requisiten
  • Ermöglicht dynamisches Rendering basierend auf der bereitgestellten Funktion

Unterhaltsame Tatsache: Das Render-Requisiten-Muster ist so flexibel, dass es sogar die meisten anderen von uns besprochenen Muster implementieren kann!

5. Das benutzerdefinierte Hakenmuster

Hooks sind die neuen Kinder in React, und benutzerdefinierte Hooks ermöglichen es Ihnen, Komponentenlogik in wiederverwendbare Funktionen zu extrahieren.

const useWindowSize = () => {
  const [size, setSize] = useState({ width: 0, height: 0 });

  useEffect(() => {
    const handleResize = () => {
      setSize({ width: window.innerWidth, height: window.innerHeight });
    };

    window.addEventListener('resize', handleResize);
    handleResize(); // Set initial size

    return () => window.removeEventListener('resize', handleResize);
  }, []);

  return size;
};

// Usage
const MyComponent = () => {
  const { width, height } = useWindowSize();
  return 
Window size: {width} x {height}
; };

Warum es erstaunlich ist:

  • Ermöglicht die einfache gemeinsame Nutzung von Stateful-Logik zwischen Komponenten
  • Hält Ihre Komponenten sauber und fokussiert
  • Kann viele Verwendungen von HOCs und Render-Requisiten ersetzen

Profi-Tipp: Wenn Sie feststellen, dass sich eine ähnliche Logik in mehreren Komponenten wiederholt, ist es möglicherweise an der Zeit, sie in einen benutzerdefinierten Hook zu extrahieren!

Fazit: Muster steigern Ihre React-Apps

Designmuster in React sind wie ein Gürtel voller Gadgets – sie geben Ihnen das richtige Werkzeug für den Job, egal welche Herausforderungen Ihre App Ihnen stellt. Erinnern:

  1. Komponentenzusammensetzung für flexible, modulare Benutzeroberflächen verwenden
  2. Container/Präsentation für eine klare Trennung von Anliegen nutzen
  3. Beauftragen Sie HOCs für Querschnittsthemen
  4. Nutzen Sie Render-Requisiten für ultimative Flexibilität
  5. Benutzerdefinierte Hooks erstellen, um zustandsbehaftete Logik zu teilen

Durch die Integration dieser Muster in Ihr React-Toolkit sind Sie auf dem besten Weg, wartbarere, wiederverwendbarere und elegantere Komponenten zu erstellen. Ihr zukünftiges Ich (und Ihre Teamkollegen) werden es Ihnen danken, wenn sie Ihre gut strukturierte Codebasis durchforsten!

Viel Spaß beim Codieren!

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/alessandrorodrigo/essential-design-patterns-for-react-apps-leveling-up-your-component-game-l8c?1 Bei Verstößen wenden Sie sich bitte an Study_golang @163.com löschen
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