🦁
onClickイベントが親要素に伝播するのを防ぐにはstopPropagationを使うと良さそう
import React from "react";
const OnClick: React.FC = () => {
const parentClick = (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => {
console.log("parent");
};
const childClick = (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => {
console.log("child");
};
return (
<div onClick={parentClick}>
<div onClick={childClick}>Click Here</div>
</div>
);
};
export default OnClick;
上記のように親要素にも子要素にもonClick
イベントを設定していた場合、子要素をクリックしただけで親要素のクリックイベントも呼ばれる。
child
parent
この現象を防ぐためには子要素側でevent.stopPropagation()
を呼び出してあげると良い。
import React from "react";
const OnClick: React.FC = () => {
const parentClick = (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => {
console.log("parent");
};
const childClick = (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => {
event.stopPropagation(); // 追加
console.log("child");
};
return (
<div onClick={parentClick}>
<div onClick={childClick}>Click Here</div>
</div>
);
};
export default OnClick;
これにより親要素側のクリックイベントが呼ばれなくなる。
child
Discussion
このような関数を定義してもいいかもです。
定義側
使用側
demo code.
簡単ですが、以上です。