React je knihovna pro tvorbu uživatelských rozhraní vyvinutá společností Facebook.
Jeho hlavním účelem je usnadnění vývoje webových aplikací, zejména těch, které vyžadují časté aktualizace dat a interakci s uživatelem.
Charakteristika
Komponenty: React je založen na konceptu komponent, což jsou samostatné, znovupoužitelné části uživatelského rozhraní. Každá komponenta může mít vlastní stav a metody.
Virtuální DOM: React používá virtuální DOM k optimalizaci výkonu.
Namísto toho, aby přímo manipuloval s reálným DOM (Document Object Model), React pracuje s jeho virtuální reprezentací (Shadow DOM), což umožňuje efektivnější aktualizace a minimalizaci re-rendering.
Jednosměrný tok dat: Data v React aplikacích obvykle cirkulují jedním směrem - od nadřazených komponent k dceřiným komponentám. To zlepšuje předvídatelnost a spravovatelnost aplikace.
Declarative syntax: Syntaxe Reactu je deklarativní, což znamená, že se zaměřuje na popis toho, jak by měl vypadat výsledný stav aplikace, namísto toho, jak ho dosáhnout.
Životní cyklus komponent: Každá komponenta v Reactu prochází určitými fázemi životního cyklu, jako je inicializace, aktualizace a odstranění. Toto umožňuje programátorům připojit k těmto událostem vlastní logiku.
JSX: JSX je syntaxe pro psaní HTML podobných struktur přímo v JavaScriptu. Tato kombinace HTML a JavaScriptu umožňuje vytvářet komponenty s přehlednějším kódem.
Použití
React je často využíván pro vývoj moderních webových aplikací a jednostránkových aplikací (Single Page Applications - SPA).
Je populární pro tvorbu uživatelsky přívětivých, interaktivních a rychlých webových rozhraní.
Jeho ekosystém zahrnuje také mnoho doplňků a knihoven, které zjednodušují práci s ním, jako například React Router pro routování, Redux pro správu stavu aplikace nebo Styled Components pro stylování komponent pomocí CSS v JavaScriptu.
export function GitUser({login}) {// destukturalizace propsconst [data, setData] = useState();useEffect(() => { if(!login) return; fetch(`https://api.github.com/users/${login}`) .then(r => r.json()) .then(setData) .catch(console.error); }, [login]); // [] je dependeci array (kdy má být hook spušten), pokud je >[] tak jen na začátku if(!data) return loading...; if(data) { return {JSON.stringify(data, null, 2)} }} // poznámka: vyzkoušet lze například
useContext
hook useContext
Dalším užitečným hookem je useContext, který umožňuje vytvářet globální stav. To je poněkud nepřesné označení, jelikož React komponenty jsou uspořádány ve stromu a jednotlivé vlastnosti mohou být přejímány od rodičů v tomto stromu (pokud je uvedeno).
useContext umožňuje vytvářet props, které jsou sdíleny v daném podstromu.
Za zmínku ještě stojí useReducer hook, který z aktuálního stavu vytváří stav nový. Například přepínání true a false, které je ukázáno níže.
const [checked, toggle] = useReducer(checked => !checked, false);
Užitečný hook je také useMemo, který umožňuje zapamatovat při renderování vypočítané hodnoty. Ty následně nemusí být opět přepočítávány (pouze pokud dojde ke změně hodnot, ze který byly vypočítány). Tento hook slouží pro optimalizaci výkonu.
Hooky je možné volat pouze na top-level úrovni. Nesmí být v cyklech a podmínkách (můžou je ale obsahovat). Hook by měl být volán pouze uvnitř komponenty. ESlint v create-react-app tato pravidla hlídá.
Kromě vestavěných hooks je možné vytvářet vlastní.