szczecinski.eu

szczecinski.eu

  • Kurs React
  • Zaawansowany React
  • Kurs Redux
  • Kurs ES6
  • Blog
  • Kontakt

›Interakcja z komponentami

Podstawowe pojęcia, konfiguracja środowiska

  • Podstawowe pojęcia
  • Środowisko NodeJS
  • Narzędzia
  • create-react-app

Wprowdzenie do React

  • ReactDOM
  • JSX
  • Komponenty
  • Kompozycja

Interakcja z komponentami

  • Przekazywanie danych w relacji rodzic : dziecko
  • propTypes i defaultProps
  • Listy komponentów
  • Listy komponentów - renderowanie bez rodzica
  • Formularze niekontrolowane, referencje
  • Zdarzenia
  • Stan komponentu
  • Cykl życia komponentu
  • Przekazywanie danych do rodzica i rodzeństwa

Receptury

  • CSS
  • CSS w JS
  • Wymiana danych - AJAX
  • Wersja produkcyjna i publikowanie aplikacji

Listy komponentów - renderowanie bez rodzica

W poprzednich rozdziałach mogliśmy zauważyć, że wszędzie tam gdzie renderujemy, lub zwracamy JSX, zwracany jest jeden nadrzędny komponent, który zawiera w sobie wiele "sąsiadujących" komponentów. Rozwiązanie to było obowiązkowe w React <= 15 i sprawiało problemy przy pracy z flexbox czy tabelami.

Począwszy od React 16.2 możliwym stało się stosowanie nowej składni z użyciem React.Fragment.

W kodzie po prawej zmieniliśmy chwilowo nasz komponent tak, by renderował dwa Tweety, owinięte w jeden <div>. Nie zawsze jest to pożądane wyjście. Możemy zatem zmodyfikować nasz komponent tak, by wyrenderowany kod nie zawierał tego dodatkowego znacznika.

Więcej o Fragmentach przeczytasz na stronie reactjs.org/docs/fragments.html.

const TweetList = ({ tweets }) => {                
  return (
    <React.Fragment>
      <Tweet tweet={tweets[0]} />,
      <Tweet tweet={tweets[1]} />
    </React.Fragment>
  );
}    

Istnieje także skrócona notacja tego mechanizmu jednak może ona nie być wspierana przez Twój boilerplate:

const TweetList = ({ tweets }) => {                
  return (
    <>
      <Tweet tweet={tweets[0]} />,
      <Tweet tweet={tweets[1]} />
    </>
  );
} 

Uwaga

Jeżeli korzystasz z React w wersji >16 i < 16.2 możesz skorzystać z biblioteki react-aux aby móc stosować uproszczoną składnię z identycznym rezultatem.

← Listy komponentówFormularze niekontrolowane, referencje →
Bartosz Szczeciński © 2019 Materiał dostępny na zasadach licencji MIT.