0Pricing
React Academy · Lekcja

Prop drilling: kiedy szkodzi, a kiedy jest w porządku

Identyfikuj głębokie łańcuchy przekazywania propsów i odróżniaj zbędny szum od rzeczywistej złożoności

Prop drilling: kiedy szkodzi, a kiedy jest w porządku to bezpłatna lekcja React Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej React Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs React Academy zawiera 4 lekcji w sumie.

Wprowadzenie

W tej lekcji nauczą się Państwo rozpoznawać prop drilling, rozumieć, kiedy powoduje on rzeczywiste problemy, oraz odróżniać go od sytuacji, w których przekazywanie propsów jest właściwym i prostym rozwiązaniem.

Czym jest prop drilling

Prop drilling występuje wtedy, gdy prop jest przekazywany przez komponenty pośrednie, które same go nie używają — potrzebują go tylko ich komponenty potomne. Każda warstwa pośrednia musi przyjąć i przekazać dalej ten prop.
// Middle component: receives 'user' only to pass it down
function Layout({ user }) {
  return <Sidebar user={user} />;
}
// Sidebar: receives 'user' only to pass it down
function Sidebar({ user }) {
  return <UserAvatar user={user} />;
}
// UserAvatar: actually uses 'user'
function UserAvatar({ user }) {
  return <img src={user.avatarUrl} />;
}

Kiedy prop drilling jest w porządku

Przekazywanie propsów przez 1–2 poziomy jest często całkowicie w porządku i stanowi najprostsze rozwiązanie. Koszt dodania Contextu lub biblioteki do zarządzania stanem jest większy niż koszt przekazania dodatkowego propa na niewielką głębokość.

Oznaki, że prop drilling stał się problemem

Prop drilling staje się problemem, gdy: (1) propsy przechodzą przez co najmniej 4 poziomy komponentów, które ich nie używają, (2) zmiana nazwy propa wymaga modyfikacji w wielu plikach, (3) trudno ustalić, który komponent faktycznie korzysta z danych.

Refaktoryzacja za pomocą kompozycji komponentów

Zanim sięgną Państwo po Context, należy spróbować **kompozycji komponentów**. Zamiast surowych danych należy przekazać jako prop (lub children) w pełni wyrenderowany komponent korzystający z tych danych. Warstwa pośrednia nie musi wtedy nic wiedzieć o danych.
// Instead of drilling 'user' through Layout → Sidebar → UserAvatar,
// render UserAvatar at the top level and pass it as a slot:
function App() {
  return <Layout sidebar={<UserAvatar user={user} />} />;
}

Kompozycja komponentów zmniejsza sprzężenie

Kompozycja oznacza, że rodzic, który posiada dane, renderuje również bezpośrednio komponent korzystający z tych danych. Pośrednie komponenty układu otrzymują gotowy JSX, dzięki czemu są całkowicie niezależne od danych.

Kiedy używać Contextu

Context należy stosować, gdy: (1) kompozycja wymagałaby przekazywania złożonego JSX przez wiele warstw, (2) wiele niezwiązanych ze sobą komponentów w różnych częściach drzewa potrzebuje tych samych danych (np. bieżącego użytkownika, motywu lub ustawień regionalnych).

Kiedy używać biblioteki do zarządzania stanem

Zustand, Redux lub podobne rozwiązania należy stosować, gdy stan jest złożony, często aktualizowany, wymaga narzędzi deweloperskich albo musi być współdzielony przez całkowicie odrębne drzewa komponentów.

Odwrotny przepływ danych

Prop drilling dotyczy również funkcji zwrotnych. Przekazywanie procedury obsługi `onChange` przez pięć poziomów jest równie uciążliwe jak przekazywanie danych. W przypadku funkcji zwrotnych należy stosować te same strategie kompozycji i Contextu.

Schemat podejmowania decyzji

Należy zadać sobie pytanie: ile jest poziomów? 1–2: wystarczy przekazywanie propsów. 3+: najpierw należy spróbować kompozycji. Jeśli rozwiązanie nadal jest nieczytelne: należy użyć Contextu. Złożona logika aktualizacji lub odrębne drzewa: należy użyć biblioteki do zarządzania stanem.

Szybkie sprawdzenie

Jakiego rozwiązania należy spróbować ZANIM sięgnie się po Context, aby rozwiązać problem prop drillingu?

Podsumowanie

Prop drilling przez 1–2 poziomy jest w porządku. Przy większej liczbie niż 3 poziomy należy najpierw spróbować kompozycji komponentów. Context należy stosować, gdy wiele komponentów korzysta z tych samych danych. Biblioteki do zarządzania stanem należy używać w przypadku złożonego stanu lub stanu współdzielonego przez odrębne drzewa komponentów.

Następnie

Następna lekcja: **Wzorce komunikacji między komponentami równorzędnymi** — nauczą się Państwo koordynować dwa komponenty równorzędne za pomocą stanu współdzielonego przez rodzica i propsów zawierających funkcje zwrotne.

Często zadawane pytania

Czy lekcja „Prop drilling: kiedy szkodzi, a kiedy jest w porządku” jest bezpłatna?

Tak — pełny tekst „Prop drilling: kiedy szkodzi, a kiedy jest w porządku” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu React Academy, przejdź na CoddyKit PRO. Kurs React Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Prop drilling: kiedy szkodzi, a kiedy jest w porządku”?

Identyfikuj głębokie łańcuchy przekazywania propsów i odróżniaj zbędny szum od rzeczywistej złożoności Ćwiczysz React Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć React Academy?

Nie wymagamy żadnego doświadczenia. React Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Prop drilling: kiedy szkodzi, a kiedy jest w porządku”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji React Academy?

Tak. Każda lekcja React Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Podnoszenie stanu: zasady i przykłady
  2. Prop drilling: kiedy szkodzi, a kiedy jest w porządku
  3. Wzorce komunikacji między komponentami siostrzanymi
  4. Wybór właściwego miejsca przechowywania stanu
← Powrót do React Academy