Akce
React router¶
React router funguje obdobně jako jakýkoliv jiný router (softwarový, abstraktně i ten hardwarový) - pro konkrétní url přesměrovává requesty konkrétním komponentám.
Následující code snippet definuje jednoduchý router pro 3 koncové body Reactí aplikace a příslušné komponenty, které jsou mountovány při requestu na tento endpoint.
import React from "react"
//naimportime samotny router - je nutne jej nainstalovat
import {BrowserRouter, Routes, Route} from "react-router-dom";
//naimpotime konfiguraci stranek, ktere mame vytvorene
import {pages} from "./pagesData";
//vlastni datovy typ pro itemy, kterym router rozumi
import {RouterType} from "../lib/global/datatypes";
const Router = () =>{
//vytvorime jednotlive routes
//title je nadpis, ktery bude element mit, napriklad "Nahrat soubor"
//path je samotne URL, ktere bude poslouchano a smerovana na konkretni element
//element je samotna komponenta, ktera bude zavolana pri samotnem requestu
const routes = pages.map(({ path, title, element }: RouterType) =>{
return <Route key={title} path= {path} element={element}/>
});
return(
//obalime jednotlive routes samotnym routerem
<BrowserRouter>
<Routes>
{routes}
</Routes>
</BrowserRouter>
)
}
export default Router;
Tento router sice zafunguje, pokud bude naimportován, ale neumožňuje uživateli navigaci konvenčním způsobem - tedy klikáním do nějakého menu. Je nutné tedy router ještě obalit nějakým vhodným HTML elementem, například unordered listem.
Následující code snippet vytváří menu pro uživatele.
import React from "react"
import {pagesRefs} from "../pages/pagesData"
import {RouterRefs} from "../lib/global/datatypes"
import "../assets/MenuNavbar.css"
//wrapper pro klienta, aby mohl routovat bez primeho psani do url
//navbar zabali router
const MenuNavbar = () => {
let key: number = 0;
const items = pagesRefs.map(({path,name}: RouterRefs)=>{
return <li key={key++}><a href={path}> {name}</a> </li>
});
return(
<div className={"navigation-menu"}>
<ul id={"nav-menu"}>
{items}
</ul>
</div>
)
};
export default MenuNavbar;
Aktualizováno uživatelem Jiří Trefil před asi 2 roky(ů) · 5 revizí