⊗jsrtPmHkCxt 8 of 47 menu

Kontext v Reacte

Predtým, než prejdeme k štúdiu nasledujúceho hooku, musíme zvážiť pojem kontextu v Reacte.

Zvyčajne sme prenášali dáta z nadradených komponentov do podradených pomocou props. Tento spôsob je dobrý, ak nemáte veľa komponentov a nemusíte prenášať props z nadradeného do požadovaného komponentu cez podradené viac ako 2-3 krát.

Tento spôsob sa tiež môže stať extrémne nepohodlným a viesť k rôznym problémom, ak sa v prechodných komponentoch tieto props vôbec nepoužívajú (takýto problém sa nazýva prop drilling), alebo ak potrebujete prenášať rovnaké dáta veľkému počtu komponentov.

V týchto prípadoch nám môže pomôcť kontext, ktorý umožňuje sprístupniť dáta nadradeného komponentu pre akýkoľvek podradený komponent, nezávisle od jeho umiestnenia v strome komponentov, bez ich prenosu cez props. Preto dáta budú prijímať len tie komponenty, ktoré ich potrebujú.

Aby sme mohli použiť kontext, musíme ho vytvoriť. Najprv vytvorme súbor MyContext.js a importujme do neho funkciu createContext:

import { createContext } from 'react';

Teraz vytvorme objekt kontextu, zapíšme ho do premennej MyContext, ktorú nezabudneme exportovať. V našom prípade sme nastavili v createContext počiatočnú hodnotu null, pretože pre nás nie je zásadná (mohli sme nechať jednoducho prázdne zátvorky). Predvolená hodnota sa objaví pri čítaní kontextu, ak nebudú nájdené žiadne iné. Táto hodnota môže byť ľubovoľného typu:

export const MyContext = createContext(null);

V nasledujúcej lekcii vytvoríme aplikáciu z niekoľkých komponentov, umiestnených v samostatných súboroch. Ak by boli všetky komponenty v jednom súbore, tak ani na vytvorenie kontextu by sme neurobili samostatný súbor a ani by sme ho neexportovali.

Poďme teraz importovať MyContext.js do prázdneho komponentu App - do toho komponentu, z ktorého sa chystáme prenášať dáta:

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

Vytvorte súbor MyContext.js a importujte ho do prázdneho komponentu App, ako je popísané v lekcii.

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť