⊗jsrtPmHkCxt 8 of 47 menu

Kontext v Reactu

Než přejdeme k studiu následujícího hooku, musíme se podívat na pojem kontextu v Reactu.

Obvykle jsme předávali data z rodičovských komponent do podřízených pomocí props. Tento způsob je dobrý, pokud nemáte mnoho komponent a nemusíte předávat props z rodičovské komponenty do požadované komponenty přes podřízené více než 2-3 krát.

Tento způsob se také může stát extrémně nepohodlným a vést k různým problémům, pokud se v mezilehlých komponentách tyto props vůbec nepoužívají (takový problém se nazývá prop drilling), nebo potřebujete předávat stejná data velkému množství komponent.

V těchto případech nám může pomoci kontext, který umožňuje zpřístupnit data rodičovské komponenty jakékoli podřízené komponentě, bez ohledu na její umístění ve stromu komponent, bez předávání přes props. Data tedy budou přijímat pouze ty komponenty, které je potřebují.

Abyste mohli použít kontext, je ho potřeba vytvořit. Nejprve vytvořte soubor MyContext.js a importujte do něj funkci createContext:

import { createContext } from 'react';

Nyní vytvoříme objekt kontextu, zapíšeme ho do proměnné MyContext, kterou nezapomeneme exportovat. V našem případě jsme nastavili v createContext výchozí hodnotu null, protože pro nás není zásadní (mohli jsme nechat jen prázdné závorky). Nastavená výchozí hodnota se objeví při čtení kontextu, pokud nebudou nalezeny žádné další. Tato hodnota může být jakéhokoli typu:

export const MyContext = createContext(null);

V příští lekci vytvoříme aplikaci z několika komponent, umístěných v samostatných souborech. Pokud by všechny komponenty byly v jednom souboru, tak bychom pro vytvoření kontextu nevytvářeli samostatný soubor a neexportovali bychom ho.

Nyní importujme MyContext.js do prázdné komponenty App - do komponenty, ze které se chystáme předávat data:

import { MyContext } from './MyContext.js';

Vytvořte soubor MyContext.js a importujte jej do prázdné komponenty App, jak je popsáno v lekci.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout