0Pricing
React Academy · Lekcja

Nazwane sloty za pomocą propsów obiektowych

Implementuj sloty header, body i footer, przekazując JSX przez nazwane propsy

Nazwane sloty za pomocą propsów obiektowych to bezpłatna lekcja React Academy na CoddyKit. To lekcja 3 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 zaimplementują Państwo elastyczne nazwane sloty, przekazując JSX za pomocą nazwanych właściwości. Umożliwia to tworzenie komponentów układu z obszarami nagłówka, treści i stopki bez sztywnej struktury children.

Ograniczenie children

Pojedyncza właściwość `children` sprawdza się w przypadku jednego obszaru. Gdy komponent potrzebuje wielu niezależnych obszarów treści, takich jak nagłówek i stopka karty, właściwości zawierające JSX i reprezentujące nazwane sloty są przejrzystym rozwiązaniem.

Sloty w nazwanych właściwościach

W interfejsie komponentu należy zdefiniować właściwość dla każdego slotu. Komponent nadrzędny przekazuje JSX do każdej właściwości, a komponent renderuje każdy slot we właściwym miejscu.
function Card({ header, body, footer }) {
  return (
    <div className="card">
      <div className="card-header">{header}</div>
      <div className="card-body">{body}</div>
      <div className="card-footer">{footer}</div>
    </div>
  );
}

// Usage
<Card
  header={<h2>Title</h2>}
  body={<p>Content here</p>}
  footer={<button>OK</button>}
/>

Opcjonalne sloty

Sloty można uczynić opcjonalnymi, renderując je tylko wtedy, gdy właściwość ma wartość truthy. Dzięki temu ten sam komponent może działać na przykład zarówno ze stopką, jak i bez niej.
function Card({ header, children, footer }) {
  return (
    <div>
      {header && <div className="header">{header}</div>}
      <div className="body">{children}</div>
      {footer && <div className="footer">{footer}</div>}
    </div>
  );
}

Połączenie children z nazwanymi slotami

Należy używać `children` dla głównego obszaru treści, a nazwanych właściwości dla obszarów dodatkowych. Jest to zgodne z zasadą, że najczęstszy przypadek użycia powinien być najbardziej ergonomiczny.
<Dialog
  title="Confirm"
  actions={<><button>Cancel</button><button>OK</button></>}
>
  <p>Are you sure?</p>  {/* children = primary slot */}
</Dialog>

TypeScript: typowanie nazwanych slotów

Nazwane właściwości slotów należy typować jako `React.ReactNode`, aby akceptowały dowolną zawartość JSX.
interface CardProps {
  header?: React.ReactNode;
  children: React.ReactNode;
  footer?: React.ReactNode;
}

Nazwane sloty a komponenty złożone

Nazwane właściwości są proste i jednoznaczne. Komponenty złożone, takie jak ``, są wygodniejsze w przypadku złożonych rodzin komponentów, ale wymagają dodatkowej konfiguracji z użyciem Context. Należy zacząć od nazwanych właściwości i w razie potrzeby przejść na inne rozwiązanie.

Przekazywanie komponentów jako slotów

Slot można również typować jako komponent React, a nie JSX. Komponent nadrzędny przekazuje referencję do komponentu, a komponent układu renderuje go. Dzięki temu komponent układu kontroluje, kiedy i ile razy slot zostanie wyrenderowany.
function Timeline({ renderItem, items }) {
  return (
    <ul>
      {items.map(item => (
        <li key={item.id}>{renderItem(item)}</li>
      ))}
    </ul>
  );
}

<Timeline
  items={data}
  renderItem={item => <EventCard event={item} />}
/>

Komponowanie układu za pomocą nazwanych slotów

Komponenty układu strony często intensywnie korzystają z nazwanych slotów. Komponent powłoki strony z slotami `sidebar`, `toolbar` i `content` pozwala różnym stronom korzystać z tej samej powłoki, ale umieszczać w każdym obszarze zupełnie inną zawartość.

Dokumentowanie nazwanych slotów

Nazwane sloty dokumentują się same za pośrednictwem interfejsów TypeScript lub PropTypes. Osoby korzystające z komponentu mogą dokładnie sprawdzić, które sloty są dostępne i które są opcjonalne, co ogranicza potrzebę korzystania z zewnętrznej dokumentacji.

Szybkie sprawdzenie

Jakiego typu TypeScript należy użyć dla właściwości nazwanego slotu, która akceptuje dowolny kod JSX?

Podsumowanie

Nazwane właściwości slotów zwiększają elastyczność komponentów układu i ułatwiają ich samodzielne dokumentowanie. Należy używać children dla głównego obszaru, nazwanych właściwości dla obszarów dodatkowych, a wszystkie te właściwości typować jako React.ReactNode.

Następna lekcja

Następna lekcja: **Klonowanie i wstrzykiwanie właściwości za pomocą cloneElement** — zostanie użyte React.cloneElement do przekazania ukrytych właściwości z komponentu nadrzędnego do jego dzieci.

Często zadawane pytania

Czy lekcja „Nazwane sloty za pomocą propsów obiektowych” jest bezpłatna?

Tak — pełny tekst „Nazwane sloty za pomocą propsów obiektowych” 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 „Nazwane sloty za pomocą propsów obiektowych”?

Implementuj sloty header, body i footer, przekazując JSX przez nazwane propsy Ć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 3 z 4.

Ile czasu zajmuje lekcja „Nazwane sloty za pomocą propsów obiektowych”?

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