웹 개발에서 이벤트 리스너가 잘 해제되고 있는지 확인해야 하는 경우가 있다.
그럴 때 getEventListener를 사용하여 확인할 수 있다.
getEventListeners(window)
getEventListeners(document)
결과
{
error: Array(1),
unhandledrejection: Array(1),
pagehide: Array(1),
popstate: Array(1)
}
결과에서 볼 수 있듯이 [Event 종류]: Array<EventTarget>으로 결과를 볼 수 있다.
예를 들어, React에서 visibilitychange 이벤트 리스너를 등록 후 지우지 않았다면
const Comp = ({children}) => {
const onVisibilityChange = () => {
/** visibilitychange 이벤트 */
}
useEffect(() => {
document.addEventListener('visibilitychange', onVisibilityChange)
}, [])
return (
<>
{children}
</>
)
}
Comp가 마운트될 때마다 visibilitychange 이벤트 리스너 객체가 새로 등록되므로 다음처럼 visibilitychange 이벤트 객체 리스트가 마운트된 횟수만큼 쌓인다.
{
error: Array(1),
unhandledrejection: Array(1),
pagehide: Array(1),
popstate: Array(1),
visibilitychange: Array(2)
}
위 결과는 컴포넌트가 두 번 마운트 되었을 때의 결과이다.
따라서 getEventListener를 활용하면 추가한 이벤트 리스너가 잘 해제되었는지 확인할 때 유용하다!
'Today I Learn > 이슈 해결' 카테고리의 다른 글
[React] render() 내에서 history.push(replace)를 하면 안되는 이유 (0) | 2021.07.08 |
---|---|
[React] history.block으로 뒤로가기 막기 (blocking-transition) (0) | 2021.07.08 |
[JS] Blur 이벤트 전에 Click 이벤트를 실행하기 (0) | 2021.03.17 |
react-router-dom __RouterContext 미존재 이슈 (0) | 2021.01.21 |
react-testing-library의 “not wrapped in act” Errors 원인과 해결법 (2) | 2021.01.08 |