St2veK: e.preventDefault(); 이 코드로 링크로의 이동 또는 form 태그의 submit 이벤트가 즉시 실행되는 것이 막힌다면, 해당 동작들은 언제 실행이 되는거야?
현재 파일기준으로, a태그에 걸린 주소로의 이동은 언제 이루어지게 되는거지?
Workspace: e.preventDefault(); 는 이벤트의 기본 동작을 막기 위해 사용됩니다. 이 코드가 실행되면 링크로의 이동이나 폼 제출과 같은 기본 동작이 실행되지 않습니다.
현재 파일 기준으로, a 태그에 걸린 주소로의 이동은 e.preventDefault();가 호출되지 않을 때 이루어집니다.
즉, e.preventDefault();가 호출되지 않으면 링크로의 이동이 기본 동작으로 실행됩니다.
예를 들어, index.js 파일에서 onThumbnailClick 함수 내에서 e.preventDefault();가 호출되기 때문에
링크로의 이동이 막히고, 대신 썸네일 클릭 시 상태값이 변경되어 이미지가 업데이트됩니다.
```javascript
const onThumbnailClick = useCallback((e) => {
e.preventDefault(); // 링크로의 이동을 막음
const href = e.currentTarget.getAttribute('href');
const idx = parseInt(href);
setCurrentIndex(idx); // 상태값을 변경하여 이미지 업데이트
}, []);
```
따라서, e.preventDefault();가 호출되지 않으면 a 태그의 기본 동작인 링크로의 이동이 이루어지게 됩니다.
St2veK: e.preventDefault(); 가 있으면, 어떤 링크로의 이동 또는 폼 태그의 submit 등의 이벤트는, 추가적인 코드로 작동시킬 내용이 없다면, 끝까지 작동을 안하는 것인가?
GitHub Copilot: 네, e.preventDefault();가 호출되면 해당 이벤트의 기본 동작은 완전히 막히게 됩니다.
따라서 추가적인 코드로 해당 동작을 수동으로 실행하지 않는 한, 링크로의 이동이나 폼 제출 등의 이벤트는 끝까지 작동하지 않습니다.
예를 들어, `a` 태그의 기본 동작인 링크로의 이동을 막고 싶다면 e.preventDefault();를 호출하고,
이후에 수동으로 링크 이동을 처리하는 코드를 작성해야 합니다.
```javascript
document.querySelector('a').addEventListener('click', function(e) {
e.preventDefault(); // 기본 동작인 링크 이동을 막음
// 수동으로 링크 이동 처리
window.location.href = e.currentTarget.href;
});
```
위 코드에서는 e.preventDefault();로 기본 동작을 막은 후,
`window.location.href`를 사용하여 수동으로 링크 이동을 처리합니다.
만약 추가적인 코드가 없다면 링크 이동은 끝까지 작동하지 않습니다.
'언어 및 도구들 공부 > Javascript' 카테고리의 다른 글
querySelector(".viewer > img") ??? (0) | 2024.11.27 |
---|---|
e.preventDefault(); 02 (0) | 2024.11.27 |
파라미터 안받는 익명+콜백 함수 (0) | 2024.11.26 |
Json 구조의 복사 (0) | 2024.11.25 |
일반적인 모듈의 export 형태 (0) | 2024.11.19 |