Ana içeriğe atla

React

Yalnızca fonksiyonel bileşenler

Her zaman named export’larla TSX fonksiyonel bileşenlerini kullanın.

Özellikler

{ComponentName}Props adında bir type oluşturun. Destructuring kullanın. React.FC kullanmayın.

Tek değişken için prop spread kullanmayın

Durum Yönetimi

Global durum için Jotai atomları

  • Prop drilling yerine atomları tercih edin
  • Durum için useRef kullanmayın — useState veya atomları kullanın
  • Listeler için atom ailelerini ve seçicileri kullanın

Gereksiz yeniden render’ları önleyin

  • useEffect ve veri çekmeyi kardeş sidecar bileşenlere ayırın
  • useEffect yerine olay işleyicilerini (handleClick, handleChange) tercih edin
  • React.memo() kullanmayın — bunun yerine kök nedeni düzeltin
  • useCallback / useMemo kullanımını sınırlayın

TypeScript

  • interface yerine type — daha esnek, birleştirmesi daha kolay
  • enum yerine string literal’lar — GraphQL codegen enum’ları ve dahili kütüphane API’leri hariç
  • any yok — katı TypeScript zorunludur
  • Type import’ları yok — normal import’lar kullanın (Oxlint typescript/consistent-type-imports tarafından uygulanır)
  • Zod kullanın tiplenmemiş nesnelerin çalışma zamanı doğrulaması için

JavaScript

İsimlendirme

  • Değişkenler: camelCase, açıklayıcı (email değil value, fieldMetadata değil fm)
  • Sabitler: SCREAMING_SNAKE_CASE
  • Tipler/Sınıflar: PascalCase
  • Dosyalar/dizinler: kebab-case (.component.tsx, .service.ts, .entity.ts)
  • Olay işleyicileri: handleClick (işleyici fonksiyon için onClick değil)
  • Bileşen prop’ları: önek olarak bileşen adını kullanın (ButtonProps)
  • Styled bileşenler: Styled öneğini kullanın (StyledTitle)

Stil

Linaria ile stillendirilmiş bileşenleri kullanın. Tema değerlerini kullanın — kodda sabit tanımlanmış px, rem veya renklerden kaçının.

İçe Aktarımlar

Göreli yollar yerine alias kullanın:

Klasör Yapısı

  • Modüller diğer modüllerden import edebilir, ancak ui/ bağımlılıksız kalmalıdır
  • internal/ alt klasörlerini modüle özel kod için kullanın
  • Bileşenler 300 satırın altında, servisler 500 satırın altında