Zustandsverwaltung
React und Jotai übernehmen die Zustandsverwaltung im Code.Verwenden Sie Jotai-Atome, um den Zustand zu speichern
Es ist eine gute Praxis, so viele Atome zu erstellen, wie Sie benötigen, um Ihren Zustand zu speichern.Verwenden Sie useRef nicht, um den Zustand zu speichern.
Vermeiden Sie die Verwendung von useRef, um den Zustand zu speichern.
Wenn Sie den Zustand speichern möchten, sollten Sie useState oder Jotai-Atome mit useAtomState verwenden.
Sehen Sie sich an, wie Re-Renderings verwaltet werden können, falls Sie das Gefühl haben, dass Sie useRef benötigen, um einige Re-Renderings zu verhindern.
Re-Renderings verwalten
Re-Renderings können in React schwer zu verwalten sein. Hier sind einige Regeln, die befolgt werden sollten, um unnötige Re-Renderings zu vermeiden. Beachten Sie, dass Sie immer Re-Renderings vermeiden können, indem Sie deren Ursache verstehen.Arbeiten Sie auf der Root-Ebene
Das Vermeiden von Re-Renderings in neuen Funktionen wird jetzt erleichtert, indem sie auf Root-Ebene eliminiert werden. DiePageChangeEffect-Sidecar-Komponente enthält nur einen useEffect-Hook, der die gesamte Logik für den Seitenwechsel enthält.
Auf diese Weise wissen Sie, dass es nur einen Ort gibt, der ein Re-Rendering auslösen kann.
Denken Sie immer zweimal nach, bevor Sie useEffect in Ihre Codebasis aufnehmen.
Re-Renderings werden oft durch unnötige useEffect-Verwendungen verursacht.
Sie sollten überlegen, ob Sie useEffect benötigen oder ob Sie die Logik in eine Event-Handler-Funktion verschieben können.
Es ist in der Regel einfach, die Logik in eine handleClick oder handleChange-Funktion zu verschieben.
Sie können sie auch in Bibliotheken wie Apollo finden: onCompleted, onError, usw.
Verwenden Sie eine Geschwisterkomponente, um useEffect- oder Datenabruf-Logik auszulagern.
Wenn Sie das Gefühl haben, Ihrer Root-Komponente einen useEffect hinzufügen zu müssen, sollten Sie erwägen, ihn in eine Sidecar-Komponente auszulagern.
Dasselbe können Sie auch für die Datenabruflogik mit Apollo-Hooks anwenden.
Verwenden Sie Atom-Familienzustände und Selektoren
Atom-Familienzustände und Selektoren sind eine großartige Möglichkeit, Re-Renders zu vermeiden. Sie sind nützlich, wenn Sie eine Liste von Elementen speichern müssen.Sie sollten nicht React.memo(MyComponent) verwenden.
Vermeiden Sie die Verwendung von React.memo(), da es nicht die Ursache für das Re-Rendering löst, sondern stattdessen die Re-Render-Kette unterbricht, was zu unerwartetem Verhalten führen kann und es sehr schwierig macht, den Code zu refaktorisieren.
Beschränken Sie die Nutzung von useCallback oder useMemo.
Oft sind sie nicht erforderlich und machen den Code schwerer zu lesen und zu warten für einen Leistungsgewinn, der kaum wahrnehmbar ist.
Console.logs
console.log-Anweisungen bieten während der Entwicklung wertvolle Echtzeit-Einblicke in Variablenwerte und den Codefluss. Aber wenn sie im Produktivcode belassen werden, kann dies zu mehreren Problemen führen:
- Leistung: Übermäßiges Logging kann die Laufzeitleistung beeinflussen, insbesondere bei clientseitigen Anwendungen.
- Sicherheit: Das Protokollieren sensibler Daten kann kritische Informationen offenlegen für jeden, der die Konsole des Browsers inspiziert.
- Sauberkeit: Das Ausfüllen der Konsole mit Logs kann wichtige Warnungen oder Fehler verdecken, die Entwickler oder Tools sehen müssen.
- Professionalität: Endbenutzer oder Kunden, die die Konsole überprüfen und eine Vielzahl von Protokollanweisungen sehen, könnten die Qualität und den Feinschliff des Codes in Frage stellen.
console.logs entfernen, bevor Sie den Code in die Produktion übertragen.
Namensgebung
Variablenbenennung
Variablennamen sollten den Zweck oder die Funktion der Variable genau beschreiben.Das Problem mit generischen Namen
Generische Namen in der Programmierung sind nicht ideal, weil ihnen die Spezifität fehlt, was zu Mehrdeutigkeit und verminderter Lesbarkeit des Codes führt. Solche Namen vermitteln nicht den Zweck der Variablen oder Funktion, was es Entwicklern erschwert, die Absicht des Codes ohne tiefere Untersuchung zu verstehen. Dies kann zu erhöhten Debugging-Zeiten, höherer Fehleranfälligkeit und Schwierigkeiten bei der Wartung und Zusammenarbeit führen. In der Zwischenzeit macht eine beschreibende Namensgebung den Code selbsterklärend und einfacher zu navigieren, was die Codequalität und die Produktivität der Entwickler verbessert.Einige Wörter, die in Variablennamen zu vermeiden sind
- Dummy
Ereignis-Handler
Ereignis-Handler-Namen sollten mithandle beginnen, während on als Präfix dient, um Ereignisse in Komponenten-Props zu benennen.
Optionale Props
Vermeiden Sie es, den Standardwert für ein optionales Prop zu übergeben. BEISPIEL Betrachten Sie die unten definierteEmailField-Komponente:
Komponente als Props
Versuchen Sie nach Möglichkeit, nicht instanziierte Komponenten als Props zu übergeben, damit untergeordnete Komponenten selbst entscheiden können, welche Props sie weiterreichen müssen. Das häufigste Beispiel dafür sind Icon-Komponenten:<MyIcon> instanziiert werden kann.
Prop Drilling: Beschränken Sie es auf das Nötigste
Prop Drilling im React-Kontext bezieht sich auf die Praxis, Zustandvariablen und deren Setter durch viele Komponentenebenen zu leiten, auch wenn Zwischenkomponenten sie nicht verwenden. Obwohl es manchmal notwendig ist, kann übermäßiges Prop Drilling zu Folgendem führen:- Verminderte Lesbarkeit: Die Nachverfolgung, woher ein Prop stammt oder wo es verwendet wird, kann in einer tief verschachtelten Komponentenstruktur verworren werden.
- Wartungsherausforderungen: Änderungen in der Prop-Struktur einer Komponente können Anpassungen in mehreren Komponenten erfordern, selbst wenn sie das Prop nicht direkt verwenden.
- Verringerte Wiederverwendbarkeit von Komponenten: Eine Komponente, die viele Props nur zum Weiterreichen erhält, wird weniger universell und schwieriger in unterschiedlichen Kontexten wiederzuverwenden.