0Pricing
React Academy · Lekcja

Narzędzia React.Children

Używaj React.Children.map, count i toArray do bezpiecznego modyfikowania elementów potomnych

Narzędzia React.Children 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 wykorzystają Państwo narzędzia React.Children — map, count, toArray i forEach — do bezpiecznego iterowania po dzieciach i ich przekształcania niezależnie od ich liczby.

Problem z bezpośrednimi metodami tablic

Ponieważ `props.children` może być pojedynczym elementem, tablicą lub mieć wartość undefined, bezpośrednie wywołanie na nim `.map()` spowoduje błąd. Narzędzia React.Children bezpiecznie obsługują wszystkie te przypadki.
// Unsafe — crashes if children is a single element
children.map(c => ...);

// Safe
React.Children.map(children, c => ...);

React.Children.map

Działa podobnie jak `Array.prototype.map`, ale bezpiecznie obsługuje pojedyncze dziecko, wiele dzieci oraz null/undefined. Zwraca tablicę sklonowanych elementów (lub dowolną wartość zwróconą przez funkcję zwrotną).
function List({ children }) {
  return (
    <ul>
      {React.Children.map(children, (child, i) => (
        <li key={i}>{child}</li>
      ))}
    </ul>
  );
}

React.Children.count

`React.Children.count(children)` zwraca liczbę dzieci, prawidłowo zliczając pojedynczy element jako 1, a null/undefined jako 0.
function RequiresTwo({ children }) {
  if (React.Children.count(children) !== 2) {
    throw new Error('Exactly two children required');
  }
  return <div>{children}</div>;
}

React.Children.toArray

Konwertuje dzieci na płaską tablicę ze stabilnymi kluczami. Dzięki temu można sortować, filtrować i wycinać dzieci za pomocą zwykłych metod tablicowych bez martwienia się o zagnieżdżenia.
function Reversed({ children }) {
  const arr = React.Children.toArray(children);
  return <>{arr.reverse()}</>;
}

React.Children.forEach

Działa podobnie jak `.map()`, ale nie zwraca wartości. Należy użyć tej metody, gdy trzeba iterować po dzieciach w celu wykonania efektów ubocznych, na przykład sprawdzenia ich typów lub zbudowania struktury wyszukiwania.
React.Children.forEach(children, child => {
  if (!React.isValidElement(child)) {
    console.warn('Non-element child found');
  }
});

React.Children.only

`React.Children.only(children)` sprawdza, czy istnieje dokładnie jeden element będący dzieckiem, i zwraca go. Zgłasza błąd, gdy nie ma żadnych dzieci lub jest ich więcej niż jedno. Jest przydatne do wymuszania interfejsów API akceptujących jedno dziecko.
function SingleChild({ children }) {
  const child = React.Children.only(children);
  return React.cloneElement(child, { 'data-wrapped': true });
}

Sprawdzanie typów dzieci

Należy połączyć `React.Children.forEach` i `React.isValidElement` z typem dziecka, aby wymusić przekazywanie jako dzieci wyłącznie określonych typów komponentów.
React.Children.forEach(children, child => {
  if (child.type !== TabPanel) {
    throw new Error('Only TabPanel children allowed');
  }
});

React.Children a Array.from

W React 18+ children może być drzewem elementów React, które nie jest zwykłą tablicą. Zawsze należy preferować React.Children zamiast Array.from, aby uniknąć problemów brzegowych związanych z pojedynczymi elementami i fragmentami.

Nowoczesna alternatywa: spłaszczanie za pomocą toArray

Jeśli potrzebne są złożone przekształcenia, należy najpierw wywołać `React.Children.toArray(children)`, aby uzyskać płaską tablicę z kluczami, a następnie zastosować na niej zwykłe metody tablicowe.
const items = React.Children.toArray(children);
const first = items[0];
const rest = items.slice(1);

Szybkie sprawdzenie

Która metoda React.Children bezpiecznie obsługuje pojedynczy element, tablicę oraz dzieci null/undefined — podobnie jak Array.map, ale w sposób odporny na te przypadki?

Podsumowanie

Należy używać React.Children.map do bezpiecznego iterowania, count do sprawdzania liczby dzieci, toArray do korzystania z metod tablicowych, forEach do iterowania w celu wykonania efektów ubocznych, a only do sprawdzania, czy istnieje dokładnie jedno dziecko.

Następna lekcja

Następna lekcja: **Nazwane sloty za pomocą właściwości obiektu** — zostaną zaimplementowane sloty nagłówka, treści i stopki przez przekazywanie JSX za pomocą nazwanych właściwości.

Często zadawane pytania

Czy lekcja „Narzędzia React.Children” jest bezpłatna?

Tak — pełny tekst „Narzędzia React.Children” 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 „Narzędzia React.Children”?

Używaj React.Children.map, count i toArray do bezpiecznego modyfikowania elementów potomnych Ć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 „Narzędzia React.Children”?

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. Podstawy props.children
  2. Narzędzia React.Children
  3. Nazwane sloty za pomocą propsów obiektowych
  4. Klonowanie i wstrzykiwanie propsów za pomocą cloneElement
← Powrót do React Academy