【いべんとはんどりんぐ】
イベントハンドリング とは?
💡 「何か起きたら、こう動く」を決めておくプログラムの反射神経
📌 このページのポイント
- addEventListener() でイベントの種類と実行する関数(ハンドラ)を紐づける
- click, input, submit, keydown, scroll など多種多様なイベントが用意されている
- Reactでは onClick, onChange などのpropsでイベントハンドラを直接JSXに書く
- イベントの伝搬(バブリング)を理解することで、親子要素のイベント制御ができる
イベントって具体的にどんなものがあるの?
バブリングってなに?
ボタンをクリックすると、そのボタンのイベント→親のdivのイベント→さらに親の…と泡のように上に伝わっていく。これがバブリング。event.stopPropagation() で伝搬を止められる。意図しない親要素の反応を防ぐのに使う。
イベントリスナーを大量に登録するとパフォーマンスに影響あるの?
あるよ。リスト1000行にそれぞれクリックイベントを付けると1000個のリスナーが登録されてメモリを食う。そこで使うのが「イベントデリゲーション」。親要素に1つだけリスナーを付けて、event.targetでクリックされた子要素を判定する。バブリングの仕組みを活用した効率的なテクニックだよ。
イベントリスナーの解除を忘れるとメモリリークになるって本当?
まとめ:ざっくりこれだけ覚えればOK!
イベントハンドリングって出てきたら「ユーザー操作に反応して処理を動かす仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「event handling」 = 出来事の取り扱い
💬 event は「出来事」、handling は「扱い」で、発生した出来事に対処すること