Zum Hauptinhalt springen

React

Ausschließlich funktionale Komponenten

Verwenden Sie immer TSX-Funktionskomponenten mit benannten Exporten.

Props

Erstellen Sie einen Typ namens {ComponentName}Props. Verwenden Sie Destrukturierung. Verwenden Sie React.FC nicht.

Kein Prop-Spreading mit einer einzelnen Variablen

Zustandsverwaltung

Jotai-Atome für globalen Zustand

  • Bevorzugen Sie Atome gegenüber Prop-Drilling
  • Verwenden Sie useRef nicht für den Zustand — verwenden Sie useState oder Atome
  • Verwenden Sie Atomfamilien und Selektoren für Listen

Vermeiden Sie unnötige Re-Renders

  • Lagern Sie useEffect und das Daten-Fetching in gleichrangige Sidecar-Komponenten aus
  • Bevorzugen Sie Event-Handler (handleClick, handleChange) gegenüber useEffect
  • Verwenden Sie React.memo() nicht — beheben Sie stattdessen die Grundursache
  • Beschränken Sie die Nutzung von useCallback/useMemo

TypeScript

  • type statt interface — flexibler, leichter zu kombinieren
  • String-Literale statt Enums — außer für GraphQL-Codegen-Enums und interne Bibliotheks-APIs
  • Kein any — striktes TypeScript wird durchgesetzt
  • Keine Type-Imports — verwenden Sie reguläre Imports (erzwungen durch Oxlint typescript/consistent-type-imports)
  • Verwenden Sie Zod für die Laufzeitvalidierung ungetypter Objekte

JavaScript

Namensgebung

  • Variablen: camelCase, aussagekräftig (email statt value, fieldMetadata statt fm)
  • Konstanten: SCREAMING_SNAKE_CASE
  • Typen/Klassen: PascalCase
  • Dateien/Verzeichnisse: kebab-case (.component.tsx, .service.ts, .entity.ts)
  • Event-Handler: handleClick (nicht onClick für die Handler-Funktion)
  • Komponenten-Props: mit dem Komponentennamen präfixieren (ButtonProps)
  • Styled Components: mit Styled präfixieren (StyledTitle)

Styling

Verwenden Sie Linaria Styled Components. Verwenden Sie Theme-Werte — vermeiden Sie hartkodierte px, rem oder Farben.

Importe

Verwenden Sie Aliase statt relativer Pfade:

Ordnerstruktur

  • Module können aus anderen Modulen importieren, aber ui/ sollte abhängigkeitsfrei bleiben
  • Verwenden Sie internal/-Unterordner für modulinternen Code
  • Komponenten unter 300 Zeilen, Services unter 500 Zeilen