⊗jsrtPmHkUEGH 6 of 47 menu

Глабальныя апрацоўшчыкі праз useEffect у React

Выкажам здагадку, што цяпер мы хочам, каб колер у нас мяняўся не толькі па кліку на кнопку, але і па націску Enter на клавіятуры. У звычайнай React жыцці праслухоўваць глабальны аб'ект window выкарыстоўваючы addEventListener нельга. Для гэтага ў нас ёсць эфекты. Давайце дадамо гэта дзеянне з дапамогай useEffect.

Напішам функцыю апрацоўшчыка па кліку на Enter. Хай колер у гэтым выпадку мяняецца на чырвоны:

function handleEnter(event) { if (event.keyCode === 13) { setColor('red'); } }

Прывязам цяпер праслухоўванне падзей да window ў хуку useEffect:

useEffect(() => { document.body.style.color = color; window.addEventListener('keydown', handleEnter); }, [color]);

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

useEffect(() => { document.body.style.color = color; window.addEventListener('keydown', handleEnter); return () => { window.removeEventListener('keydown', handleEnter); }; }, [color]);

Дадзены кампанент. Зрабіце так, каб па кліку на любое месца старонкі фон гэтага кампанента мяняў колер.

Зрабіце спасылку, па націску на якую будзе з'яўляцца блок. Зрабіце так, каб па націску ў любое месца акна браўзера наш блок схаваўся.

Беларуская
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 для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць