이벤트 전파
export default function Toolbar() {
return (
<div className="Toolbar" onClick={() => {
alert('You clicked on the toolbar!');
}}>
<button onClick={() => alert('Playing!')}>
Play Movie
</button>
<button onClick={() => alert('Uploading!')}>
Upload Image
</button>
</div>
);
}
위 코드에서 버튼을 클릭하면 해당 버튼 이벤트 핸들러의 함수가 먼저 실행되고 이후 div 태그의 이벤트 핸들러 함수가 실행된다.
하지만 버튼이 아닌 툴바만을 클릭하면 div의 이벤트 핸들러 함수만 실행된다.
이벤트 전파를 방지하는 방법
function Button({ onClick, children }) {
return (
<button onClick={e => {
e.stopPropagation();
onClick();
}}>
{children}
</button>
);
}
export default function Toolbar() {
return (
<div className="Toolbar" onClick={() => {
alert('You clicked on the toolbar!');
}}>
<Button onClick={() => alert('Playing!')}>
Play Movie
</Button>
<Button onClick={() => alert('Uploading!')}>
Upload Image
</Button>
</div>
);
}
e.stopPropagation()를 통해 해결할 수 있다.
https://ko.react.dev/learn/responding-to-events
이벤트에 응답하기 – React
The library for web and native user interfaces
ko.react.dev
'프론트엔드 > Javascript' 카테고리의 다른 글
[Javascript] 브라우저 기본동작과 이벤트 동작의 차이점 및 이벤트 버블링 방지 방법 (0) | 2024.12.24 |
---|---|
[Javascript] 이벤트 루프 작동방식(GPT 4.0) (0) | 2024.08.09 |
객체 자료형, 이터러블 객체, 유사 배열의 관계 (0) | 2024.06.02 |
바람직한 함수명 짓기 (0) | 2024.05.28 |
바람직한 변수명 짓기 (0) | 2024.05.28 |