⊗jsrtPmHkCxt 8 of 47 menu

Кантэкст у React

Перад тым, як перайсці да вывучэння наступнага хука, нам неабходна разгледзець паняцце кантэксту у React.

Звычайна мы перадавалі даныя ад бацькоўскіх кампанентаў даччыным з дапамогай пропсаў. Гэты спосаб добры, калі ў вас няшмат кампанентаў і вам не трэба перакідваць пропсы ад бацькоўскага да патрэбнага вам кампанента праз даччыныя больш 2-3 разы.

Даны спосаб таксама можа стаць вельмі незручным і прывесці да розных праблем, калі ў прамежкавых кампанентах гэтыя пропсы ўвогуле не выкарыстоўваюцца (такая праблема завецца prop drilling), ці вам трэба перадаваць адны і тыя ж даныя вялікай колькасці кампанентаў.

У гэтых выпадках нам можа дапамагчы кантэкст, які дазваляе зрабіць даныя бацькоўскага кампанента даступнымі для любога даччынага, незалежна ад яго размяшчэння ў дрэве кампанентаў, без перадачы іх праз пропсы. Адпаведна, прымаць даныя будуць толькі тыя кампаненты, якім яны патрэбны.

Для таго, каб скарыстацца кантэкстам, яго трэба стварыць. Для пачатку, створым файл MyContext.js і імпартуем у яго функцыю createContext:

import { createContext } from 'react';

Цяпер створым аб'ект кантэксту, запiшам яго ў зменную MyContext, якую не забудзем экспартаваць. У нашым выпадку, мы ўстанавілі ў createContext пачатковае значэнне null, так як нам яно непрынцыпова (можна было пакінуць проста пустыя дужкі). Зададзенае значэнне па змаўчанні з'явіцца пры чытанні кантэксту, калі не будзе знойдзена якіх-небудзь іншых. Дадзенае значэнне можа быць любога тыпу:

export const MyContext = createContext(null);

У наступным уроку мы створым прыкладанне з некалькіх кампанентаў, размешчаных у асобных файлах. Калі б усе кампаненты былі у адным файле, то і для стварэння кантэксту мы не сталі б рабіць асобны файл і не сталі б яго экспартаваць.

Давайце цяпер імпартаваць MyContext.js у пусты кампанент App - у той кампанент, з якога мы збіраемся перадаваць даныя:

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

Стварыце файл MyContext.js і імпартуйце яго ў пусты кампанент App, як апісана ў уроку.

Беларуская
AfrikaansAzərbaycanБългарскиবাংলাČeštinaDanskDeutschΕλληνικά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
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць