언어 및 도구들 공부/Javascript

e.preventDefault(); 01

Dr.Mlem 2024. 11. 27. 12:12

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