React on JavaScripti teek kasutajaliideste loomiseks. Seda kasutatakse dünaamiliste ja interaktiivsete veebirakenduste arendamiseks. React võimaldab jagada kasutajaliidese väikesteks taaskasutatavateks komponentideks, mis muudab koodi loetavamaks ja paremini hallatavaks. Rakendus uuendub automaatselt state’i muutumisel ilma lehte värskendamata.
Mis on komponent?
Komponent on iseseisev kasutajaliidese osa, mida saab korduvalt kasutada.
Milleks kasutatakse state’i?
State’i kasutatakse muutuvate andmete hoidmiseks (nt otsingusõna ja lemmikfilmide nimekiri).
Miks on React kasulik?
React võimaldab luua struktureeritud ja loogilise rakenduse, kus andmed ja kasutajaliides on selgelt eraldatud.
Olulised mõisted
JSX – JavaScripti süntaks, mis võimaldab kirjutada HTML-sarnast koodi Reactis.
Component – Reacti ehitusplokk, mis tagastab kasutajaliidese osa.
Props – andmed, mida antakse vanemkomponendist alamkomponendile.
State – komponendi sees hoitavad muutuvad andmed.
React projekti loomine
Projekt loodi Vite abil:
npm create vite@latest movie-library -- --template react
cd movie-library
npm install
npm run dev
Rakenduse struktuur
Rakendus koosneb järgmistest komponentidest:
- App.jsx
- NavBar.jsx
- Home.jsx
- Favorites.jsx
- MovieList.jsx
- MovieCard.jsx
App.jsx — põhikomponent
App on rakenduse juurkomponent.
- Siin asub filmide massiiv (üks andmeallikas).
- Siin hoitakse lemmikfilmide ID-sid state’is.
- Siit edastatakse andmed Home ja Favorites komponentidele propside kaudu.
- Siin kasutatakse React Routerit lehtede vahetamiseks.

Home.jsx — avaleht
Home vastutab:
- Filmide kuvamise eest
- Otsingufunktsiooni eest
State:
searchTermsalvestab kasutaja sisestatud teksti.
Filmid filtreeritakse tsükli abil:


Tulemuseks kuvatakse ainult need filmid, mille pealkiri vastab otsingule.

Favorites.jsx — lemmikute leht
Favorites kuvab ainult need filmid, mille ID on salvestatud lemmikute state’i.
- Kui lemmikuid pole, kuvatakse teade.
- Kui lemmikud on olemas, kuvatakse MovieList.
Filmid leitakse kahe tsükli abil (lihtne loogika, ilma keeruliste konstruktsioonideta).

MovieCard.jsx — üks film
MovieCard kuvab:
- Plakati
- Pealkirja
- Aasta
- Nupu “Add to Favorites” või “Remove from Favorites”
Nupu vajutamisel kutsutakse välja funktsioon, mis lisab või eemaldab filmi lemmikutest.

State’i kasutamine
Lemmikfilmid salvestatakse App komponendi state’i:
const [favoriteIds, setFavoriteIds] = useState([]);
Kokkuvõte
Projektis kasutati:
- Komponente (App, Home, Favorites, MovieList, MovieCard)
- Propside kaudu andmete edastamist
- State’i dünaamiliste andmete hoidmiseks
- Otsingufunktsiooni filter-loogikaga
- React Routerit lehtede vahel liikumiseks
Rakendus kuvab filmide nimekirja, võimaldab otsida filme ning lisada neid lemmikutesse.
