-
반응형
발생 현상
- 마우스 오버관련 이벤트가 추가된 <Link>를 모바일에서 클릭시 바로 넘어가지 않고 두번 클릭해야 링크되는 현상 발생
- PC는 전현 문제 없음
발생 원인
- Touch 디바이스에서는 첫 클릭때 onMouseEnter, onMouseOver를 먼저 인식함
- 터치를 쓰기 위해 이벤트를 옮기거나 없애야함
수정 방법
어찌됐던 PC에서는 마우스 이벤트가 필요한 상황이라
찾아보던 중 비슷한 사례를 발견
react-device-detect를 이용하여 접속 기기가 터치식인지 확인 후
마우스 이벤트에 삼항 연산으로 터치식인 경우 false를 돌려보내 인식하지 못하게 해줌으로 해결
/* 수정 전 */ <Link to={'/url'} onClick={onClickHandler} onMouseEnter={onMouseEnterHandler} onMouseLeave={onMouseLeaveHandler} /> /* 수정 후 */ import { isMobile, isTablet } from 'react-device-detect'; <Link to={'/url'} onClick={onClickHandler} onMouseEnter={(isMobile || isTablet) ? ()=>false : onMouseEnterHandler} onMouseLeave={(isMobile || isTablet) ? ()=>false : onMouseLeaveHandler} />
참고 사이트
https://www.reddit.com/r/reactjs/comments/arggf9/prevent_onmouseenter_event_from_firing_on_mobile/
반응형'FrontEnd > React' 카테고리의 다른 글
Next.js Style 사용법 (0) 2023.03.04 Next.js 사용 하는 이유? React.js 와 Next.js의 차이 (0) 2023.03.03 댓글