⊗jsrtPmHkUCt 9 of 47 menu

Контекстуален хук useContext в React

В този урок ще продължим работата с контекста. Сега ще изградим дърво от компоненти. За начало в отделен файл ще създадем React компонент BigBox:

function BigBox() { return ( <p>bigbox</p> ); }

Ще го импортираме и ще го поставим в нашия главен компонент App:

import BigBox from './BigBox'; function App() { return ( <BigBox /> ); }

За по-голяма яснота малко стилизираме дивовете. За това ще създадем файл styles.css:

div { border: 1px solid blue; margin: 10px; text-align: center; max-width: 300px; }

Да не забравим да го импортираме в App.js:

import './styles.css';

Сега в отделен файл ще създадем компонент MiddleBox:

function MiddleBox() { return ( <p>middlebox</p> ); }

И ще го поставим в голямата кутия BigBox:

import MiddleBox from './MiddleBox'; function BigBox() { return ( <div> <MiddleBox /> </div> ); }

Ще направим същото с малката кутийка SmallBox:

function SmallBox() { return ( <p>Аз съм ... </p> ); }

Ще поставим две такива кутийки в MiddleBox:

import SmallBox from './SmallBox'; function MiddleBox() { return ( <div> <SmallBox /> <SmallBox /> </div> ); }

Дървото изградихме. А сега ние искаме от нашия App да предадем, предполагаме, в SmallBox низова стойност 'small box :)', без да използваме пропсове, а използвайки контекст (вдруг нашето кутийково приложение да се разрастне до огромни размери).

Файлът с контекста MyContext.js ние вече създадохме и свързахме в предишния урок.

Следващата стъпка, която ще направим - ще увием BigBox в провайдер на контекста, който е свойство на нашия обект контекст MyContext. Сега всички компоненти, заключени в тази конструкция (а това са всички кутийки, вложени в BigBox) ще могат да получат достъп и да се абонират за промени в контекста. Като стойност на контекста предаваме желаната 'small box :)':

function App() { return ( <MyContext.Provider value="small box :)"> <BigBox /> </MyContext.Provider> ); }

А сега остана да прочетем стойността на контекста. Искахме да го използваме в SmallBox, значи ще импортираме там файла с контекста MyContext.js и хука useContext:

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

Ще прочетем с помощта на useContext стойността на контекста в променливата name:

function SmallBox() { const name = useContext(MyContext); return ( <div> <p>Аз съм ... </p> </div> ); }

Ние абонирахме SmallBox за този контекст и, ако той се промени, този компонент също ще бъде обновен.

И, накрая, поставяме стойността на променливата name вместо многоточието:

function SmallBox() { const name = useContext(MyContext); return ( <div> <p>Аз съм {name} </p> </div> ); }

В празния компонент App създайте компонент Parent, а в него компонент Daughter, а в Daughter компонент Grandson. Използвайки контекст, предайте от App стойността на възрастта 42, а с помощта на useContext я изведете в компонента Daughter.

А сега в компонента Grandson изведете стойността на възрастта, но разделена на 2.

Български
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
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне