React routing

React Web

A React-ben az oldalak közötti navigációhoz leggyakrabban a React Router csomagot használjuk, ezt is telepíteni, majd importálni kell. A React Router megkönnyíti az oldalak közötti hivatkozásokat és a modern, egylapos alkalmazások (SPA-k) fejlesztését. Ugyanakkor a Reactben nincsenek hagyományos értelemben vett oldalak, mint sima html-ben, itt komponensek vannak, és ezekre tudunk hivatkozni!

telepítés: npm install react-router-dom

importálás: import { BrowserRouter, Routes, Route, Link } from ‘react-router-dom’;

  • A BrowserRouter komponens fogja tartalmazni a teljes alkalmazást.
  • A Link komponens biztosítja az oldalak közötti navigációra anélkül, hogy az weblap újratöltődne.
  • NavLink komponens: a Link speciális változata, amely támogatja az aktív stílusokat vagy osztályokat a jelenleg aktív útvonalak kiemelésére
  • A Routes belsejében definiáljuk az útvonalakat (Route), és megadjuk, hogy melyik komponens jelenjen meg az adott útvonalon.

Nézzünk meg egy példát, egy bemutatkozó weblapot!

  • Hogyan lehet egy ‘oldalon’ belüli komponensre hivatkozni? Készítettem egy Gyik nevű komponenst, ami az App.jsx-ben található, ugyanitt lesz a navigációnk is.
  • Hogyan lehet egy másik jsx-ben található komponensre hivatkozni?
  • Hogyan lehet könyvjelzőt használni?
  • Hogyan lehet külső hivatkozást új lapon megnyitni?

Az App.jsx fájl tartalmazza a navigációt

Bemutatkozas.jsx és a NappaliButor.jsx 1-1 komonenst tartalmaz, a példa kedvéért

A KonyhaButor.jsx fájlban van 2db könyvjelzőnk, és egy Szek komponensünk is!

App.jsx

Importáljuk a komponenseket, illetve a navigációhoz szükséges React modulokat is. A navigációért a BrowserRouter felel. A konkrét komponensek elérési útját és megjelenítendő elemeit a Routes – Route tartalmazza. A linkek a path-ben magadott azonosítókra tudnak hivatkozni.

Külső hivatkozásnál ugyanúgy az <a> taget használjuk, szokásos target attributummal. A rel= “noopener” használata arra utasítja a böngészőt, hogy nyisson meg egy hivatkozást egy új lapon anélkül, hogy hozzáférést biztosítana a hivatkozást megnyitó weboldalhoz. A rel=”noreferer” funkciójában hasonló a noopener-hez. Megakadályozza, hogy a böngésző elküldje a hivatkozó weboldal címét, amikor egy másik oldalra lép. A linkelt oldal tulajdonosa nem kap információt arról, hogy a látogató milyen weboldalról érkezett.

Az útvonalak: a React app gyökere a / Én ezt most hozzárendeltem a Bemutatkozas.jsx-ben található Bemutatkozas komponenshez. Ahogy látjuk, ez a komponens elérhető lesz a gyökérből és a /bemutatkozas url-ről is!
A KonyhaButor.jsx fájlból a KonyhaButor komponensre hivatkozok a /konyha útvonallal. (Ez a default export, de van benne egy Szek komponens is, azt is exportáltam, és nyilván importálni kell az App.jsx-ben!) Ezen belül a könyvjelzők ugyanúgy megadhatók, mint html-ben: /konyha#konyvjelzo illetve /konyha#konyvjelzo2
Külső oldalnak nem szükséges Route, simán <a href=””> segítségével tudunk rá hivatkozni.

Bemutatkozas.jsx és Nappalibutor.jsx sima egyszerű div-et tartalmaz, itt csak a Bemutatkozas.jsx tartalma lesz fent:

NappaliButorok.jsx Ez az oldal tartalmaz 2db könyvjelzőt. (ugyanúgy div + id, mint html-ben)

A React nem ugrik automatikusan a megadott könyvjelzőkhöz! Ehhez importálni kell a react-router-dom useLocation komponensét! Könyvjelzőnél tulajdonképpen a #-et keressük meg. A useLocation hook segítségével hozzáférhetsz az aktuális útvonal hash részéhez. A location.hash értéke például #konyvjelzo vagy #konyvjelzo2 lesz, ha a linkre kattintunk az App.jsx-ben.

A JavaScript scrollIntoView metódust használjuk, hogy a megfelelő elemhez görgessünk. A behavior: „smooth” opció lehetővé teszi az animált görgetést. Lehet „auto” is, ebben az esetben nem görget, hanem egyből a könyvjelzőhöz ‘ugrik’, mint sima html esetén.

A useEffect figyeli a location.hash változását, és amikor változik, azonosítja az id alapján az elemet. A scrollIntoView block paraméterével megadható, a könyvjelzős tartalom pozíciója:

  • „start”: Az elem az oldal tetején helyezkedik el
  • „center”: Az elem az oldal közepén lesz látható
  • „end”: Az elem az oldal alján helyezkedik el
  • „nearest”: A legközelebbi pozíciót választja, hogy az elem látható legyen. */

A későbbiekben szó lesz még a védett útvonalakról, amik csak feltétel teljesülése esetén tekinthetők meg.

2. példa: Bamutatkozó oldal sablon

Ebben a feladatban megnézzük:

  • Statikus útvonalak: /, /about, /contact
  • Dinamikus útvonal: /user/:id
  • 404-es hiba oldal: path=”*”
  • NavLink aktív stílus: .active osztály
  • Programozott navigáció: useNavigate a Home oldalon

Visual Studio Code-ban nyiss egy új terminált!
npm create vite @latest
adni kell neki egy nevet, kiválasztani a React-ot, és a JavaScriptet.
Ha kész a projekt akkor npm i és npm i react-router-dom
Szokásos npm run dev paranccsal indítható.

About.jsx és Contact.jsx
Statikus ‘oldalak’. Egyszerű komponensek, amelyek külön útvonalon jelennek meg. Ezek gyakorlatilag sablon komponensek., nincs bennük semmi extra.

App.jsx

Ez az alkalmazás belépési pontja. Itt csomagoljuk be a komponenseket a BrowserRouter-be, hogy az egész alkalmazásban elérhető legyen a routing. A BrowserRouter biztosítja az útvonalkezelést a React Router számára. Tartalmazza az útvonalak definícióját (Routes és Route). Itt határozzuk meg, melyik URL-hez melyik oldal (komponens) tartozik, és itt kezeljük a 404-es oldalt is.

Home.jsx

A gomb onClick eseményre azonnal átirányítja a felhasználót az /about oldalra, újratöltés nélkül. A useNavigate egy imperatív navigációs eszköz, amelyet akkor használunk, ha nem linkre kattintással, hanem esemény (pl. gombnyomás, API válasz) alapján akarunk átirányítani.

Mire lehet még használni a navigate-et?
navigate(-1); // egy lépéssel vissza
navigate(1); // egy lépéssel előre
navigate(‘/about’, { state: { from: ‘home’ } });
navigate(‘/about’, { replace: true });

Navbar.jsx

Ez a komponens tartalmazza a navigációs sávot, amely NavLink-eket használ az oldalak közötti váltáshoz.
A NavLink automatikusan hozzáadja az active osztályt az aktuális oldal linkjéhez, így könnyen stílusozható.

NotFound.jsx

404-es oldal, ha az útvonal nem létezik. Felhasználói élmény szempontjából fontos, hogy jelezzük, ha az oldal nem található. Természetesen megadható lenne akár a Home komponens is, hogy bármilyen ismeretlen url esetén oda ugorjunk vissza.

Users.jsx

Dinamikus útvonal kezelése (/user/:id).
Bemutatja a useParams hook használatát, amivel az URL paramétereket olvashatjuk ki.

Frissítve: 2025.11.11.