React komponensek

React Web

Az alap React alkalmazásunkban az App komponens így nézett ki. Van egy App() füvvényünk, ami egy egyes szintű címsort jelenít meg. Ha nem akarunk semmit megjeleníteni, használhatjuk a null elemet a return-ben.

Alapvetően ha több elemet is használni szeretnénk, akkor tegyük bele őket egy fragment-be (üres tag-be)! Használhatjuk konkrétan a <Fragment> taget is, de akkor importálni kell! Tehát sokkal egyszerűbb simán üres taget használni.

Hogyan lehet jsx-ben kommentet használni? Így: {/* Komment */}
import { Fragment } from ‘react’;

Hogyan jelenítsük meg a tartalmat az index.html-ben? Nem muszáj az App.jsx-et és a main.jsx-et is használni, beletehetnénk a tartalmunkat közvetlenül a main.jsx-be is! De ezt nem szoktuk, mert több komponens esetén átláthatatlan lesz a kód.

Több komponens használata

Készítsünk egy új fájlt az src mappában, TesztKomponensek.jsx néven! Ennek tartalmát kell importálni az app.jsx-be, majd a return-ben meghívni.

Nézzük az app.jsx-et:

Változó, mint komponens

jsx-ben akár egy változó is lehet egy komponens!

Változó kiíratásánál { } zárójelet kell használni. pl: adjunk egy css osztályt az egyik bekezdésnek, amibe ráadásul egy változó tartalmát írjuk ki! Jsx-ben a class foglalt utasítás neve, ezért className-et használunk!

Nézzünk meg egy bonyolultabb példát! Jelenítsük meg egy listában egy tömb elemeit! A map függvényt hazsnáljuk, hogy végigmenjünk a tömb elemein. Minden elemnek szükséges adni egy kulcsot, amivel a React a gyermek elemeket azonosítani tudja. (ha később pl. szeretnénk egy lista elemet törölni, módosítani…)

Props (properties)

A React props a komponensek közötti adatátadásra szolgál. A props tartalmazhat adatokat, függvényeket is. Az első példában egy szülőkomponens adatokat ad át egy gyermekkomponensnek. Ezek az adatok csak olvashatók a gyermekkomponens számára, tehát nem módosíthatók. (immutable).

Ennek a kódnak az eredménye: Helló, React!

Olvashatóbb, áttekinthetőbb, ha destructuring-ot használunk:

Props, default (alapértelmezett) értékkel. Lehetőség van alapértelmezett értéket megadni. Tehát a SzuloKomponensben simán hívjuk meg, paraméter nélkül, akkor az alapértelmezett prop kerül kiírásra: Nincs üzenet.

Ha a props fügvény, akkor lehetőség van a gyermek komponensből a szülő kompponensnek eseményt visszaküldeni. Tehát itt a a szülő komponens eseménykezelője fut le:

Komponens állapota – state

Egy komponensnek lehet állapota, képes pl. adatokat tárolni. Az állapot kezelésére a React useState() függvényét használjuk.

Egészítsük ki egy gombbal a kódot! A gomb lenyomására meghívjuk a setName() függvényt.

Nézzünk egy másik példát! Generáljunk gombnyomásra 1-100 közötti random számot! A random szám értékét a setVeletlenSzam állapot módosító függvénnyel tudjuk beállítani. Jsx-ben nyugodtan használhatunk inline css-t is, nézzünk is meg. Annyi a megkötés, hogy dupla kapcsos zárójelet kell használni hozzá!