⊗jsrtPmHkUEGH 6 of 47 menu

Globalne obsługi za pomocą useEffect w React

Załóżmy, że teraz chcemy, aby kolor zmieniał się nie tylko po kliknięciu przycisku, ale także po naciśnięciu Enter na klawiaturze. W zwykłym życiu React nasłuchiwanie na globalnym obiekcie window używając addEventListener jest niedozwolone. Do tego mamy efekty. Dodajmy tę akcję za pomocą useEffect.

Napiszmy funkcję obsługi po kliknięciu Enter. Niech kolor w tym przypadku zmieni się na czerwony:

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

Przywiążmy teraz nasłuchiwanie zdarzeń do window w hooku useEffect:

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

Jeśli mamy jakąś funkcję konfiguracyjną, to zawsze musimy w useEffect zwrócić kod czyszczący lub anulujący subskrypcję, aby uniknąć problemów w przyszłości. W tym przypadku po dołączeniu addEventListener musimy zwrócić jego usunięcie:

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

Dany jest komponent. Spraw, aby po kliknięciu w dowolne miejsce na stronie tło tego komponentu zmieniało kolor.

Stwórz link, po kliknięciu którego pojawi się blok. Spraw, aby po kliknięciu w dowolne miejsce okna przeglądarki nasz blok był ukryty.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć