REACT alapok

React Web

A React egy JavaScript alapú könyvtár, amelyet a Facebook fejlesztett ki. A React kifejezetten felhasználói felületek (UI) építésére szolgál, és különösen népszerű az egyoldalas alkalmazások (SPA Single Page App) készítése során.

A REACT komponensalapú keretrendszer.
A React virtuális DOM-ot (Virtual DOM) használ, amely gyorsabbá teszi az alkalmazást azáltal, hogy csak a szükséges változtatásokat végzi el a valódi DOM-ban. Tehát nem tölti újra az egész weboldalt, hanem csak azt a a részét amit éppen szükséges.

Szükséges JS ismeretek: modulok használata – import, export, objektumok, ternary operators, arrow functions, spread operators… stb. Ezek nélkül a React használata se fog menni!

Mire lesz szükség hozzá?

Szükség lesz a Node.js telepítésére. Utána a csomagkezelőt már el lehet érni VS Code terminálból, és létre tudjuk hozni az első React alkalmazást az pl: npm create vite@latest paranccsal. Ezután meg fogja kérdezni az alkalmazás nevét, illetve hogy milyen összetevőket szeretnénk. (React, JavaScript). Ha lefutott a script akkor ki fogja írni milyen parancsokat kell még kiadni. cd mappa neve, npm install és npm run dev
Ha minden jól megy ezután elindul a szerver.

Bővebb leírás a telepítésről, és a React komponensekről

Néhány szóban az NPM-ről

  • NPM (Node Package Manager) a Node.js hivatalos csomagkezelője, tehát a Node.js telepítésekor az NPM is automatikusan települ.
  • Feladata: könyvtárak (package-ek) telepítése, frissítése, verziókezelése és függőségek kezelése.
  • Több mint 1 millió nyílt forráskódú csomagot tartalmaz, így a JavaScript ökoszisztéma alapvető része.
  • A React maga is egy NPM-csomag.
  • A React projektekhez számos további csomag kell (pl. react-dom, fejlesztői eszközök, build toolok).
  • Az NPM segítségével egyszerűen telepíthetők és kezelhetők ezek a függőségek.

Node és NPM verzió ellenőrzése terminálból/powershell-ből

React projekt – fontos fájlok és mappák

package.json fájlban:

  • dependencies: futtatáshoz szükséges csomagok.
  • devDependencies: fejlesztéshez szükséges csomagok.

node_modules: (mappa a projekten belül)

  • Ide kerülnek a telepített csomagok.
  • Nagyon nagy lehet, de nem kell kézzel módosítani.

package.json:

  • A projekt „függőségi listája”.
  • Tartalmazza a projekt nevét, verzióját, scriptjeit.

package-lock.json:

  • Pontos verziókat rögzít, hogy minden gépen ugyanaz a környezet legyen.
  • Automatikusan generálódik telepítéskor.

Miből áll össze a REACT?

Komponensek (React Components): komponensek, ezekből áll össze az alkalmazás. pl. lehet komponens egy fejléc, menü, geléria, stb. Tulajdonképpen a komponens egy JS függvény, aminek van visszatérési értéke. A komponenst úgy lehet meghívni, mint egy html taget.
Funkcionális komponensek (function components): Egyszerűbb, modern megközelítés.Nem kell render metódus, JSX-et adnak vissza. Állapot kezelésre a useState és useEffect hook-ot használja.
Osztályalapú komponensek (class components): Régebbi, de még mindig használt megközelítés.
Egy komponens tartalmazhat HTML-t, CSS-t és JavaScript logikát.

JSX: (JavaScript XML): kiegészíti a JS lehetőségeit, egy fájlba lehet JS és html kódot írni, egybe. Fájlkiterjesztése lehet js vagy jsx. A html tageket kisbetűvel kell írni!

Ha csak egy JSX elemet adunk vissza, a return elhagyható, ekkor csak sima zárójelet kell használni!

Nézzünk még egy példát komponens használatára. Létrehoztam egy gombot tartalmazó komponenst, amit a nevével lehet meghívni .

STATE és PROPS (állapot és paraméterek)

State: A komponens belső állapotát reprezentálja, amely idővel változhat. Az állapot információkat tartalmaz a komponensről, és meghatározza, hogyan viselkedjen a komponens. Az állapot bármikor változhat a felhasználói viselkedés alapján. Az állapot bármilyen változása az egész komponens újra renderelését okozza.

Props (properties): az adatok egyik komponensből a másikba történő átvitelének egyik módja. Úgy tekinthetők, mint a komponenseknek átadott argumentumok. A props csak olvasható, az értékek nem módosíthatóak direkt! Az átadott állapotértékek az állapotfrissítés funkcióval frissíthetők!

Ebben a példában van egy szülő komponens, amiből a nevet és a kort örökli a gyermek komponens.

Egészítsük ki egy state-tel a példát! A useState segítségével tároljuk a klikkelések számát. A példában egy szülőkomponens ad egy nevet (props) a gyermekkomponensnek, amely megjeleníti azt. A gyermek komponens saját állapotot kezel (kattintások számát), és a gomb megnyomásával frissíti ennek értékét.

Hooks

Modern funkciók, amelyek lehetővé teszik az állapotkezelést és egyéb React funkciók használatát funkcionális komponensekben (pl. useState, useEffect).

useState hook példa

A következő példában a useState függvény egy kezdeti értéket kap argumentumként, és egy tömböt ad vissza, amely két elemet tartalmaz: az aktuális állapotot és egy állapotfrissítési függvényt.

Két gombunk van, amelyek növelik és csökkentik a számláló értékét. A gombokra kattintva a számláló állapotát frissítjük. A komponens ezután újra és újra megjeleníti a frissített számlálót.

useEffect hook példa: Bővebben: useEffect(setup, dependencies?)

A React useEffect hook egy olyan eszköz, amely lehetővé teszi, hogy a komponensünk „mellék műveleteket” hajtson végre.

  • Adatok lekérése egy API-tól: A komponens megjelenésekor vagy frissítésekor adatokat tölthetünk be egy külső forrásból. useEffect-ben használhatjuk az async/await szintaxist
  • Subscription-ök kezelése: Feliratkozhatunk bizonyos eseményekre (pl. window resize, timer) és ezekre reagálhatunk a komponensben.
  • Direkt DOM manipuláció: Bár általában nem ajánlott, bizonyos esetekben közvetlenül is módosíthatjuk a DOM-ot.
  • Tiszta műveletek végrehajtása: Az useEffect segítségével tisztítási műveleteket is végezhetünk, például amikor a komponens le van bontva, vagy amikor bizonyos feltételek teljesülnek.

Az useEffect egy függvényt használ paraméterként. Ez a függvény a függőségi tömbtől függően hívódik meg:
– üres függőségi tömb: a függvény csak egyszer hívódik meg, amikor a komponens megjelenik.
– nem üres függőségi tömb: a függvény minden rendereléskor meghívódik, amikor a függőség tömbben szereplő értékek megváltoznak.

Listázzuk ki az imgflip.com oldalon található képeket! Az api címe: https://api.imgflip.com/get_memes
A lekérés eredménye egy data nevű objektum, ami tartalmaz egy memes nevű tömböt, és minden mém egy objektum a tömbben. A mémek adatai: id, name, url, width, height, box_count, captions.

Az app.jsx tartalma:

Készítsünk mémet! Az imgflip.com oldal api-ját felhasználva, kérdezzük le az összes adatot, tároljuk el egy tömbben! A tömbből válasszunk ki egy képet, és tegyünk rá feliratokat! (2db beviteli mező értékét jelenítjük meg)

Jelenítsük meg a Rick and Morty api segítségével egy szereplő adatait! 1-300 közötti számot adhatunk meg a szövegbetveli mezőben.

További példák, és magyarázat a React saját weboldalán.