[React] isMobile - 모바일 화면사이즈인지 판별하는 custom hook 만들어 쓰기
2023. 3. 9. 18:05
반응형
니즈
- 해당 화면을 모바일 화면크기로 보고있는지 앱 전체에서 알 필요X.. 일부 컴포넌트에서만(=부분적으로) 필요했음
- 무슨 디바이스로 접속했는지 등의 자세한 정보는 필요하지 않았음
- '모바일' 또는 '모바일아님' 이렇게 두 가지 상태로만 나뉘는 간단한 반응형 웹이었음
뭐 대단한 걸 요구하는 게 아니었기 때문에..
react-responsive와 같은 외부 모듈을 가져다 쓰는 것 보다는 간단한 custom hook을 만들어 쓰기로 했다.
커스텀 훅 만들기
// useMobile.ts
import { useState, useEffect } from 'react'
import { mobileSize } from 'src/styles/theme'
const useMobile = () => {
const [isMobile, setIsMobile] = useState<boolean>(false)
useEffect(() => {
const init = () => {
if (mobileSize > window.innerWidth) {
setIsMobile(true)
} else {
setIsMobile(false)
}
}
init()
window.addEventListener('resize', init)
return () => window.removeEventListener('resize', init)
}, [])
return { isMobile }
}
export default useMobile
사용을 원하는 컴포넌트
import useMobile from 'src/hooks/useMobile'
...
const { isMobile } = useMobile();
console.log(isMobile);
참고문서
반응형
'한 걸음 > React & Next.js' 카테고리의 다른 글
[REACT/JS] 서버에서 Blob 형태로 받아온 파일을 string 값으로 변환해 화면에 그려주기 (0) | 2023.10.19 |
---|---|
[axios] get method > parameter가 있을 때만 요청 보내기 (0) | 2023.10.08 |
[styled-components] theme에 반응형 기준사이즈 및 자주쓰는 컬러 추가하기 (0) | 2023.03.07 |
CSR vs SSR vs SSG의 차이 (0) | 2023.03.02 |
vercel로 배포한 사이트 새로고침 시 404 에러 뜨는 문제 해결 (0) | 2023.01.27 |