React a jeho ekosystém
React samotný je pouze knihovna pro tvorbu uživatelského rozhraní. Jeho skutečná síla ale spočívá v širokém ekosystému nástrojů a knihoven, které nám pomáhají řešit složitější problémy jako routing, formuláře, výkonnost nebo vizuální vzhled.
React sám o sobě neobsahuje žádné řešení pro směrování mezi stránkami. K tomu se nejčastěji používá knihovna React Router.
React Router nám umožňuje:
- rozdělit aplikaci do více „stránek“ (komponent),
- reagovat na změny v URL,
- vytvářet navigaci,
- a předávat parametry do komponent.
Základní příklad:
import { BrowserRouter, Routes, Route } from "react-router-dom";
import Domu from "./Domu";
import Oaplikaci from "./Oaplikaci";
export default function App() {
return (
<BrowserRouter>
<Routes>
<Route path="/" element={<Domu />} />
<Route path="/o-nas" element={<Oaplikaci />} />
</Routes>
</BrowserRouter>
);
}
Umožňují pracovat s parametry v URL. Například /uzivatel/123:
<Route path="/uzivatel/:id" element={<ProfilUzivatele />} />
A v komponentě získáš id pomocí:
import { useParams } from "react-router-dom";
const { id } = useParams();
Moderní aplikace mohou být velké a načítání všech komponent najednou může zpomalit první zobrazení. Pomocí lazy loadingu můžeme komponenty načítat jen tehdy, když jsou potřeba.
import { lazy, Suspense } from "react";
const Nastaveni = lazy(() => import("./Nastaveni"));
export default function App() {
return (
<Suspense fallback={<div>Načítání…</div>}>
<Nastaveni />
</Suspense>
);
}
Tím rozdělíme aplikaci do samostatných chunks, které se načítají postupně (tzv. code splitting).
Správa formulářů bývá v Reactu často komplikovaná. Nejpopulárnějším řešením je dnes kombinace React Hook Form a Zod pro validaci.
Lehká a výkonná knihovna pro správu formulářů, která se skvěle doplňuje s React hooks.
import { useForm } from "react-hook-form";
const { register, handleSubmit } = useForm();
const onSubmit = data => console.log(data);
<form onSubmit={handleSubmit(onSubmit)}>
<input {...register("jmeno")} />
<button type="submit">Odeslat</button>
</form>
Pomocí knihovny Zod můžeme definovat typově bezpečné validační schéma:
import { z } from "zod";
import { useForm } from "react-hook-form";
import { zodResolver } from "@hookform/resolvers/zod";
const schema = z.object({
jmeno: z.string().min(2, "Jméno musí mít alespoň 2 znaky"),
});
const { register, handleSubmit, formState: { errors } } = useForm({
resolver: zodResolver(schema),
});
<form onSubmit={handleSubmit(data => console.log(data))}>
<input {...register("jmeno")} />
{errors.jmeno && <p>{errors.jmeno.message}</p>}
<button type="submit">Odeslat</button>
</form>
✅ Výhoda: typová bezpečnost + čistý a srozumitelný zápis.
Stylování aplikace může být časově náročné. Pomocí UI knihoven můžeme využít hotové komponenty.
Shadcn je moderní knihovna komponent postavená na Tailwind CSS. Nabízí:
- čistý design,
- jednoduché přizpůsobení vzhledu,
- přístupnost (a11y) jako základní vlastnost.
import { Button } from "@/components/ui/button";
<Button>Uložit změny</Button>
Vite je moderní nástroj pro vývoj React aplikací. Nabízí:
- extrémně rychlé načítání díky nativním ES modulům,
- okamžitý hot reload,
- jednoduchou konfiguraci.
npm create vite@latest
Vite se doporučuje pro nové projekty místo CRA (Create React App).
Next.js je framework nad Reactem, který přidává:
- server-side rendering (SSR),
- statické generování stránek (SSG),
- routing bez konfigurace,
- API routes,
- optimalizaci výkonu a SEO.
Pokud plánuješ stavět větší aplikaci nebo web s vícestránkovou strukturou, Next.js je výbornou volbou.