usePlatform
跟踪用户当前平台的信息。
usePlatform 通过解析 navigator.userAgent 中的用户代理字符串来检测用户的设备平台。它返回一个包含 platform 值("ios"、"android" 或 "unknown")和辅助方法 isInMiniProgram()、isInWechat() 和 isiPhoneX() 的对象。对于 SSR,你可以传递 userAgent 字符串以启用服务端检测。
使用场景
- 渲染平台特定的 UI 或行为(例如在 iOS 和 Android 上的不同滚动处理)
- 检测微信或小程序环境,用于专门的集成
- 在 iPhone X 及更新型号上调整安全区域内边距或刘海处理
注意事项
- SSR 安全:接受可选的
userAgent属性用于服务端渲染。如果不提供,服务端平台返回"unknown"。 - 用户代理解析:检测依赖
navigator.userAgent,可能被伪造。仅用于渐进增强,不用于安全关键决策。 - 相关 hooks:参见
useScreenSafeArea了解安全区域内边距值,以及useMobileLandscape了解移动设备上的方向检测。
Usage
Live Editor
function Demo() { const {platform} = usePlatform(); return <p>平台: {platform}</p>; };
Result
API
UsePlatformProps
| 参数名 | 描述 | 类型 | 默认值 |
|---|---|---|---|
| userAgent | 服务端渲染时,需要传递 userAgent | string | - |
usePlatform
Returns
UsePlatformReturn: 和平台相关的对象
Arguments
| 参数名 | 描述 | 类型 | 默认值 |
|---|---|---|---|
| props | - | UsePlatformProps | undefined | - |
UsePlatformReturn
| 参数名 | 描述 | 类型 | 默认值 |
|---|---|---|---|
| platform | 平台 | Platform (必填) | - |
| isInMiniProgram | 是否在小程序中 | () => boolean (必填) | - |
| isInWechat | 是否在微信中 | () => boolean (必填) | - |
| isiPhoneX | 是否是 iPhoneX | () => boolean (必填) | - |
Platform
export type Platform = 'ios' | 'android' | 'unknown';