⊗jsrtPmHkUEGH 6 of 47 menu

useEffect를 사용한 React의 전역 이벤트 핸들러

이제 버튼 클릭뿐만 아니라 키보드의 Enter 키를 눌러도 색상이 변경되도록 하고 싶다고 가정해 보겠습니다. 일반적인 React 방식으로는 addEventListener를 사용하여 전역 객체 window를 구독할 수 없습니다. 이를 위해 우리에겐 effect가 있습니다. useEffect를 사용하여 이 동작을 추가해 봅시다.

Enter 키를 눌렀을 때 실행될 핸들러 함수를 작성해 보겠습니다. 이 경우 색상을 빨간색으로 변경하도록 합시다:

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

이제 useEffect 훅 내에서 window에 대한 이벤트 리스너를 등록해 보겠습니다:

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
우리는 웹사이트 운영, 분석 및 개인화를 위해 쿠키를 사용합니다. 데이터 처리는 개인정보 처리방침에 따라 이루어집니다.
모두 수락 설정 거부