프론트엔드/JS
e.stopPropagation()과 e.preventDefault()의 차이
거북목을 가진 김기린
2024. 4. 18. 14:16
728x90
반응형
e.stopPropagation()
- 현재 이벤트가 이벤트 버블링 또는 캡처링 과정을 통해 상위 또는 하위 요소로 전파되는 것을 막아줌
- 사용 예시: 버튼을 클릭했을 때 그 버튼을 포함하는 상위 요소에서도 클릭 이벤트가 처리되는 것을 막고 싶을 때 사용
e.preventDefault()
- 이벤트의 기본 동작을 취소할 때 사용
- 사용 예시: <a> 태그의 클릭 이벤트는 URL로의 이동을 하는 기본 동작을 가지고, 폼 제출 이벤트는 데이터 전송을 기본 동작으로 가지고 있는데, 이러한 기본 동작을 막아줌
적용
- 해당 아이템이 '완료' 상태일 때 클릭 이벤트 전파 방지를 위해 event.stopPropagation(); 사용
const TodoList = ({ items, onListClick, onItemClick }) => {
const handleItemClick = (item, event) => {
if(item.done == true){
// 해당 아이템이 '완료' 상태일 때 클릭 이벤트 전파 방지
event.stopPropagation();
}
else{
onItemClick(item, event);
}
};
return (
<ul onClick={onListClick}>
{items.map((item, index) =>
<TodoItem item={item} key={index} onClick={(event) => handleItemClick(item, event)}/>)}
</ul>
);
}
728x90
반응형