Přejít na hlavní obsah

React

Pouze funkcionální komponenty

Vždy používejte funkcionální komponenty TSX s pojmenovanými exporty.

Vlastnosti

Vytvořte typ s názvem {ComponentName}Props. Používejte destrukturalizaci. Nepoužívejte React.FC.

Nepoužívejte prop spreading jediné proměnné

Správa stavu

Atomy Jotai pro globální stav

  • Upřednostňujte atomy před prop drillingem
  • Nepoužívejte useRef pro stav — použijte useState nebo atomy
  • Používejte rodiny atomů a selektory pro seznamy

Vyhněte se zbytečnému opakovanému vykreslování

  • Přesuňte useEffect a načítání dat do sesterských sidecar komponent
  • Upřednostňujte obslužné funkce událostí (handleClick, handleChange) před useEffect
  • Nepoužívejte React.memo() — místo toho opravte kořenovou příčinu
  • Omezte používání useCallback / useMemo

TypeScript

  • type místo interface — flexibilnější, lépe kombinovatelný
  • Řetězcové literály místo výčtů — s výjimkou enumů GraphQL codegenu a interních API knihoven
  • Žádné any — vynucený přísný TypeScript
  • Žádné importy typů — používejte běžné importy (vynuceno nástrojem Oxlint typescript/consistent-type-imports)
  • Používejte Zod pro runtime validaci netypovaných objektů

JavaScript

Pojmenovávání

  • Proměnné: camelCase, popisné (email nikoli value, fieldMetadata nikoli fm)
  • Konstanty: SCREAMING_SNAKE_CASE
  • Typy/Třídy: PascalCase
  • Soubory/adresáře: kebab-case (.component.tsx, .service.ts, .entity.ts)
  • Obslužné funkce událostí: handleClick (nikoli onClick pro obslužnou funkci)
  • Vlastnosti komponenty (props): předponu tvoří název komponenty (ButtonProps)
  • Stylované komponenty: předpona Styled (StyledTitle)

Styling

Používejte stylované komponenty Linaria. Používejte hodnoty z tématu — vyhněte se napevno zadaným px, rem nebo barvám.

Importy

Používejte aliasy místo relativních cest:

Struktura složek

  • Moduly mohou importovat z jiných modulů, ale ui/ by mělo zůstat bez závislostí
  • Používejte podadresáře internal/ pro interní kód modulu
  • Komponenty do 300 řádků, služby do 500 řádků