返回 AiToEarn
useIsMobile.ts
根目录 / project / aitoearn-web / src / hooks / useIsMobile.ts
1 /**
2 * useIsMobile Hook
3 *
4 * 功能描述: 检测当前设备是否为移动端(屏幕宽度 < 768px)
5 * 用于移动端适配,如禁用拖拽、切换弹窗类型等
6 */
7 import { useEffect, useState } from 'react'
8
9 /**
10 * 检测当前是否为移动端设备
11 * @returns boolean - true 表示移动端,false 表示桌面端
12 */
13 export function useIsMobile() {
14 const [isMobile, setIsMobile] = useState(false)
15
16 useEffect(() => {
17 // SSR 安全检查
18 if (typeof window === 'undefined')
19 return
20
21 const mediaQuery = window.matchMedia('(max-width: 767px)')
22
23 // 设置初始值
24 setIsMobile(mediaQuery.matches)
25
26 // 监听变化
27 const handler = (e: MediaQueryListEvent) => setIsMobile(e.matches)
28 mediaQuery.addEventListener('change', handler)
29
30 return () => mediaQuery.removeEventListener('change', handler)
31 }, [])
32
33 return isMobile
34 }
35
35 lines TYPESCRIPT