Komponenty v komponentách
Jiné komponenty nemusí používat jen App, umí to každá komponenta. Program festivalu je seznam kapel a každá kapela dostane kartu. Karta je samostatná komponenta KartaKapely a Program ji používá stejně, jako App používá Program:
// Program.jsx
import KartaKapely from "./KartaKapely.jsx";
export default function Program() {
return (
<section>
<h2>Program</h2>
<div className="karty">
<KartaKapely />
<KartaKapely />
</div>
</section>
);
}Komponenty tak tvoří strom, podobně jako prvky HTML vložené do sebe: App obsahuje Hlavicka a Program a Program obsahuje karty:
App
├── Hlavicka
└── Program
├── KartaKapely
└── KartaKapelyKaždý soubor si sám importuje komponenty, které používá, a jen ty. Program.jsx importuje KartaKapely a App.jsx o ní vědět nemusí. Cesta "./KartaKapely.jsx" se počítá od souboru, ve kterém import je, tady od Program.jsx.
A jednu komponentu můžete použít, kolikrát chcete. Každé <KartaKapely /> zavolá funkci znovu a přidá na stránku další kartu. Právě v tom jsou komponenty tak užitečné: kartu napíšete jednou, a když ji změníte, změní se s ní všechny karty na stránce.
Zatím jsou všechny karty stejné, protože kapely ještě nejsou oznámené. V další lekci, Props, dostane každá karta svou kapelu.
Tentokrát budete pracovat v KartaKapely.jsx a Program.jsx. App.jsx a Hlavicka.jsx jsou hotové.
Jak psát:
Pokyny
V KartaKapely.jsx napište komponentu KartaKapely s výchozím exportem. Vrátí <article className="karta"> s nadpisem <h3>Bude upřesněno</h3> a odstavcem <p>Sledujte novinky!</p>. Stránka se zatím nezmění: karty na ni dáte v dalším kroku.
V Program.jsx importujte KartaKapely a do div s třídou karty dejte místo komentáře pět karet: na festivalu hraje pět kapel.
Změňte kartu na jednom místě, v KartaKapely.jsx: místo Sledujte novinky! bude v odstavci Už brzy. Spusťte kód: změní se všech pět karet.