⊗jsrtPmHkUEGH 6 of 47 menu

useEffectを使用したReactでのグローバルイベントハンドラー

ここで、ボタンをクリックしたときだけでなく、キーボードの Enterキーを押したときにも色が変わるようにしたいとします。 通常のReactの手法では、addEventListener を使用してグローバルオブジェクトwindowを監視することはできません。 この目的のために、エフェクトがあります。 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
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否