Heim > Web-Frontend > js-Tutorial > Hauptteil

Das Biest zähmen: Wie ich eine Messy-React-Komponente umgestaltet habe

WBOY
Freigeben: 2024-08-19 17:13:33
Original
970 Leute haben es durchsucht

Taming the Beast: How I Refactored a Messy React Component

Das haben wir alle schon erlebt. Sie öffnen eine React-Komponente, die Sie vor ein paar Monaten geschrieben haben, und es kommt Ihnen so vor, als würden Sie sich Code ansehen, der von jemandem geschrieben wurde, der es eilig hatte – was wahrscheinlich der Fall war. Die Fristen rückten näher und Funktionen mussten geliefert werden. Spulen wir heute vor und es ist Zeit, diese chaotische Komponente umzugestalten.

Also, hier ist, wie ich es angegangen bin.

Der anfängliche Horror

Das erste, was mir auffiel, war, dass das Bauteil viel zu groß geworden war. Es wurde versucht, alles zu tun, wie den Status zu verwalten, API-Aufrufe durchzuführen, komplexe UI-Logik zu verwalten und sogar Stile direkt anzuwenden. Es handelte sich um eine einzelne Datei mit über 540 Zeilen, und beim Durchlesen fühlte es sich an, als stünde man in einem Dschungel ohne Karte.

Der erste Schritt bestand darin, die Realität zu akzeptieren: Dieser Code war nicht mehr wartbar. Wenn ich, die Person, die es geschrieben hat, dem Geschehen kaum folgen könnte, hätte jemand anderes keine Chance. Also beschloss ich, es aufzuschlüsseln.

Aufschlüsseln

Ich begann damit, die unterschiedlichen Verantwortlichkeiten der Komponente zu identifizieren. Es gab drei klare Bereiche:

  1. Statusverwaltung: Die Handhabung des Komponentenstatus war mit der UI-Logik verknüpft.

  2. API-Aufrufe: Daten abrufen und Ladezustände verarbeiten.

  3. Rendering-Benutzeroberfläche: Anzeige der Daten in einer etwas komplexen UI-Struktur.
    Jede dieser Verantwortlichkeiten musste getrennt werden.

Extrahieren von Hooks für Status- und API-Logik

Das erste, was ich tat, war, die Statusverwaltung und die API-Logik in benutzerdefinierte Hooks zu extrahieren. Dadurch wurde nicht nur die Komponente bereinigt, sondern es wurde auch einfacher, die Logik an anderer Stelle zu testen und wiederzuverwenden.

Hier wird ein Code erwähnt (nicht der Originalcode):

function useDataFetching(apiEndpoint) {
  const [data, setData] = useState(null);
  const [loading, setLoading] = useState(true);
  const [error, setError] = useState(null);

  useEffect(() => {
    async function fetchData() {
      try {
        let response = await fetch(apiEndpoint);
        let result = await response.json();
        setData(result);
      } catch (err) {
        setError(err);
      } finally {
        setLoading(false);
      }
    }

    fetchData();
  }, [apiEndpoint]);

  return { data, loading, error };
}

Nach dem Login kopieren

Mit useDataFetching habe ich die API-Aufruflogik herausgezogen und die Lade- und Fehlerzustände verarbeitet. Jetzt muss die Komponente nur noch diesen Hook aufrufen und erhält die erforderlichen Daten, sauber und einfach.

Vereinfachung der UI-Logik
Als nächstes habe ich mir die Rendering-Logik angesehen. Zuvor habe ich die Renderfunktion auf Ladevorgänge, Fehler und Daten überprüft, was es ziemlich schwierig machte, ihnen zu folgen. Ich habe diese Logik in kleine, in sich geschlossene Funktionen aufgeteilt, etwa so (natürlich nicht das Original ;)

function renderLoading() {
  return <p>Loading...</p>;
}

function renderError(error) {
  return <p>Error: {error.message}</p>;
}

function renderData(data) {
  return <div>{/* Complex UI logic here */}</div>;
}
//After that, component is ni much pretty shape

function MyComponent() {
  const { data, loading, error } = useDataFetching('/api/data-endpoint');

  if (loading) return renderLoading();
  if (error) return renderError(error);
  if (data) return renderData(data);

  return null;
}
Nach dem Login kopieren

Abschlussgespräch

Nachdem die Komponente zerlegt wurde, wuchs die Datei von über 540 Zeilen auf knapp 124 an, mit einer Logik, die viel einfacher zu befolgen ist. Die Komponente macht jetzt eines: die Benutzeroberfläche rendern. Alles andere wurde auf benutzerdefinierte Hooks und Dienstprogrammfunktionen verlagert.

Diese Erfahrung hat für mich einige wichtige Lektionen bestätigt:

  • Keine Angst vor Refactoring: Es ist leicht, unordentlichen Code so zu belassen, wie er ist, insbesondere wenn er funktioniert. Aber wenn Sie sich die Zeit nehmen, alles aufzuräumen, wird Ihr Leben – und das Ihres zukünftigen Ichs – so viel einfacher.

  • Trennung von Belangen: Durch die Beibehaltung unterschiedlicher Belange an verschiedenen Stellen (Status, API, UI) wurde der Code modularer, wiederverwendbarer und testbarer.

  • Halten Sie es einfach: Durch die Vereinfachung der Renderfunktion durch Auslagern der Logik auf kleinere Funktionen wurde die Komponente viel lesbarer.

Wenn Sie also eine unordentliche Komponente herumliegen haben, zögern Sie nicht, sie umzugestalten. Es geht nicht nur um sauberen Code – es geht darum, Ihnen das Leben als Entwickler zu erleichtern. Und wer möchte das nicht?

Das obige ist der detaillierte Inhalt vonDas Biest zähmen: Wie ich eine Messy-React-Komponente umgestaltet habe. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!