file: use-is-mobile.md # useIsMobile 현재 디바이스가 모바일인지 감지하는 React Hook입니다. ## 개요 useIsMobile은 현재 디바이스가 모바일인지 감지하는 React Hook입니다. 미디어 쿼리와 User Agent를 조합하여 정확한 모바일 감지를 제공합니다. ## Import ```tsx import { useIsMobile } from '@inpock/ids'; ``` ## 기본 사용법 ```tsx function ResponsiveComponent() { const { isMobile, isLoading } = useIsMobile(); if (isLoading) { return ; } return isMobile ? : ; } ``` ## 반환 값 | Property | Type | Description | |----------|------|-------------| | `isMobile` | `boolean` | 모바일 디바이스 여부 | | `isLoading` | `boolean` | 감지 진행 중 여부 (SSR 하이드레이션 대응) | ## 예시 ### 조건부 렌더링 ```tsx function Navigation() { const { isMobile } = useIsMobile(); return ( ); } ``` ### 조건부 props ```tsx function Card({ children }) { const { isMobile } = useIsMobile(); return ( {children} ); } ``` ### SSR 하이드레이션 처리 ```tsx function ResponsiveLayout() { const { isMobile, isLoading } = useIsMobile(); // 로딩 중에는 기본 레이아웃 표시 (SSR과 일치) if (isLoading) { return ; } return isMobile ? : ; } ``` ## 구현 세부사항 - **브레이크포인트**: 768px - **감지 방식**: `matchMedia` API + User Agent 문자열 검사 - **SSR 대응**: 클라이언트 하이드레이션 전까지 `isLoading: true` 반환 ## Best Practices ✅ **올바른 사용법** - 레이아웃 분기에 사용 - isLoading 상태 처리로 하이드레이션 불일치 방지 - 모바일 전용 기능 활성화/비활성화에 사용 ❌ **피해야 할 사용법** - CSS 미디어 쿼리로 해결 가능한 스타일링에는 CSS 사용 권장 - 빈번한 리렌더링이 발생하는 컴포넌트에서 주의