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