Notice
Recent Posts
Recent Comments
Link
250x250
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- googleicon
- 플러그인
- 웹아이콘
- 의존성문제
- fontawesome
- react npm install
- 그누보드반응형
- 이미지반응형
- npm install
- 동적객체
- node설치
- XEIcon
- 정적객체
- package.json
- npm install 문제
- minwidth
- 글자들여쓰기
- 단어단위로떨어지기
- owlcarousel
- window 정책변경
- MediaQuery
- Git clone
- npm start
- vscode git clone
- maxwidth
- legacy-peer
- node 오류
- 아이콘사용법
- git lab clone
- slickslider
Archives
- Today
- Total
어쩌다 알게 된 ƪ(•̃͡•̃͡ ƪ
[js] 이벤트 버블링 막기 => e.stopPropagation(); 본문
728x90
이벤트 버블링이란?
- HTML 요소에서 발생한 이벤트가 부모 요소로 전파되는 과정
- 특정 요소에서 이벤트가 발생하면, 그 이벤트는 해당 요소부터 시작해서 가장 상위 요소(즉, document 또는 window)까지 차례로 전달되는 것
이벤트 버블링 발생 중인 코드 👇
function Div({ index, 구이름, like, setLike }){
const likeCount = () => {
setLike((prevLikes) => {
const updateLikes = [...prevLikes];
updateLikes[index] = updateLikes[index] + 1;
return updateLikes;
})
};
return(
<>
<div style={{ marginTop: '10px' }} onClick={() => { console.log(5); }}>
<span>{구이름[index]}</span>
<button onClick={likeCount}>💙 <span>{like}</span></button>
</div>
</>
)
}
위에 코드를 예를 들자면
💙가 있는 button을 클릭 하면 상위 부모인 div도 클릭되는 셈!
=> 그래서 div의 console.log(5)도 함께 찍힌다. (이게 이벤트 버블링)
결과 👇

이벤트 버블링 개선 코드 👇
function Div({ index, 구이름, like, setLike }){
const likeCount = (e) => { ✅
e.stopPropagation(); ✅
setLike((prevLikes) => {
const updateLikes = [...prevLikes];
updateLikes[index] = updateLikes[index] + 1;
return updateLikes;
})
};
return(
<>
<div style={{ marginTop: '10px' }} onClick={() => { console.log(5); }}>
<span>{구이름[index]}</span>
<button onClick={likeCount}>💙 <span>{like}</span></button>
</div>
</>
)
}
결과 👇

console이 찍히지 않는다!
728x90
'자바스크립트' 카테고리의 다른 글
| .interact() / interact.js / 드래그, 드롭, 리사이즈, 제스처 제어 (0) | 2025.09.03 |
|---|
Comments
