Toto je projekt na procvičení React Routeru. Představ si, že programuješ stránku internetového filmového magazínu. Naše aplikace bude mít menu, ve kterém se můžeš přepnout mezi několika stránkami. Na webu budou stránky Home, Reviews, Articles a Movies.
Na reálném webu by stránky Home, Reviews a Articles obsahovaly dynamický obsah. Např. seznam aktuálních filmů v kině na domovské stránce, seznam recenzí na stránce Reviews a třeba blogové příspěvky na stránce Articles. V našem cvičném projektu na těchto stránkách zobrazíme pouze statický text. Půjde nám pouze o to, naučit se mezi stránkami přepínat.
Na stránce Movies se trochu vyřádíme. Na levé straně budeme chtít zobrazit seznam filmů v naší "databázi". Po kliknutí na jméno filmu chceme na pravé polovině stránky zobrazit detail konkrétního filmu.
V projektu použijeme React Router, abychom se mohli mezi jednotlivými stránkami přepínat. I když je náš web vytvořený jako SPA, budou mít díky React Routeru jednotlivé stránky vlastní adresy, takže bude možné například nasdílet přítelům odkaz na konkrétní film.
- Pomocí tlačítka Use this template a potom Create a new repository si udělěj kopii tohoto repozitáře do svého GitHub účtu.
- Svůj vytvořený repozitář si naklonuj k dosbě na disk.
- Na příkazové řádce ve složce projektu spusť
npm install
, aby se ti doinstalovaly potřebné závislosti.
Struktura celé naší aplikace bude vypadat následovně:
- HTML a CSS pro projekt si můžeš vymyslet úplně sama nebo můžeš použít kód připravený v projektu ve složce
html-vzor
. HTML rozkouskuj do příslušných komponent a přidej k nim potřebné CSS. - Do projektu si doinstaluj React Router:
npm install react-router-dom
- Založ si složku
components
a vytvoř v ní komponentyHome
,Reviews
aArticles
. Doplň do komponent nadpis a nějaký vymyšlený text. Pokud chceš, můžeš přidat i nějaký vlastní obrázek. - Vytvoř komponentu
Movies
, do které si zatím přidej třeba jenom nadpis. Další obsah doplníme později. - V hlavním
index.jsx
naimportuj potřebné komponenty a funkce z React Routeru. - Vytvoř si definici cest pro router a nastav vše tak, aby se pod adresou
/
zobrazila na stránce komponenta<App />
. - Do komponenty
App
přidej<Outlet />
z React routeru a zařiď, aby se v tomto outletu zobrazovaly komponenty<Home />
,<Reviews />
,<Articles />
a<Movies />
. Home se bude zobrazovat při zadání adresy/
. Ostatní komponenty budou mít adresy/reviews
,/articles
,/movies
, atd. V definici routeru tyto routy udělej jako potomky hlavní routy/
. - Vytvoř komponentu
Menu
a přidej do ní odkazy na jednotlivé stránky. Komponentu vlož do hlavníApp
tak, aby bylo menu vždy viditelné, i když se budeme přepínat mezi stránkami. - Vytvoř komponentu
MovieList
, která bude zobrazovat seznam filmů (doplníme v dalším kroku). Komponentu přidej dovnitř komponentyMovies
. Chceme, aby se seznam filmů zobrazil na stránce Movies, když klikneme na odkaz v menu. - V tomto projektu nebudeme pracovat se serverovým API, odkud bychom načítali data. Ale všimni si, že v projektu ve složce
/src
máme soubormovie-database.js
, který exportuje pole nazvanémovies
. Toto pole můžeme v našem projektu naimportovat, kdekoliv budeme potřebovat pracovat s filmovými daty. Naimportujmovies
zmovie-database.js
do komponentyMovieList
. - Použij data k tomu, abys v komponentě zobrazila seznam filmů. Pro každý film v databázi se zobrazí název filmu, který bude fungovat jako odkaz pro React Router a povede na adresu
/movies/1
, kde místo1
bude vždy ID konkrétního filmu. - Do komponenty
Movies
přidej<Outlet />
z React Routeru. Uvnitř tohoto outletu budeme chtít zobrazovat detail filmu, když klikneme na jeho odkaz vMovieList
. - Vytvoříme komponentu
Movie
, která bude sloužit pro zobrazení detailu filmu. - V definici routeru v hlavním
index.jsx
doplníme jako potomka pod routumovies
novou dynamickou cestu:id
, která bude zobrazovat naši novou komponentuMovie
s detailem filmu. - V komponentě
Movie
si pomocíuseParams
načti ID filmu, který máš zobrazit. - I do komponenty
Movie
si naimportuj data zmovie-database.js
. Podle ID získaného zuseParams
vyhledej v datech správný film a zobraz jeho detaily v komponentě. Stačí, když zobrazíš obrázek, název filmu a jeho popis.
Až bude celá aplikace hotová, mělo by jít klikáním v menu přepínat mezi jednotlivými stránkami. První tři stránky budou jen obyčejné textové. Stránka Movies bude zobrazovat na levé straně seznam filmů. Když se v seznamu klikne na název filmu, zobrazí se na pravé stránce detail vybraného filmu.
- Doplň do detailu filmu i další údaje, které jsou v databázi - rok vydání filmu, žánr, hodnocení, řežiséra a seznam herců.
- Přidej do projektu i chybovou stránku, pokud by někdo zadal adresu neexistující stránky.
- Použij komponentu
NavLink
z routeru, abys v menu i v seznamu filmů zvýraznila aktuálně vybranou stránku/film. Popis komponentyNavLink
najdeš v dokumentaci. - Doplň vlastní CSS styly, aby všechno vypadalo nádherně.