
taro-hooks
工具Taro 专用 React/Vue Hooks 库,封装小程序原生 API 为 Hooks,集成 ahooks 通用 Hooks,支持 Taro 全端
tarohooksreactvuetypescriptminiprogramahooks
详细文档
taro-hooks#
资源概述#
taro-hooks 是一个为 Taro 框架量身打造的 React/Vue Hooks 库,将小程序原生 API 封装为符合直觉的 Hooks 接口,同时集成 ahooks 通用 Hooks 集。支持 React、Vue3 Composition API,兼容微信/支付宝/百度/抖音/QQ/京东/鸿蒙等 Taro 全端目标。
核心特点:
- Taro API Hooks 化:将
Taro.request、Taro.getStorage、Taro.getLocation等原生 API 封装为useRequest、useStorage、useLocation等 Hooks - 框架双支持:React/PReact/Nerv 和 Vue3 Composition API 均可使用
- 集成 ahooks:扩展通用 Hooks(useToggle、useDebounce、useThrottle 等),无需额外安装
- 完整 TypeScript 类型:全量类型定义,IDE 自动补全
- 按需引入:ESM 产物,支持 tree-shaking
项目数据(2026-08-08):
- GitHub:452⭐ / 36 forks / MIT License
- npm:最新版 2.2.0 / 48 versions / 周下载约 800-1200
- 活跃度:最后推送 2025-04-06,v2 版本开发中
- 文档站点:https://next-taro-hooks.pages.dev
- 社区:Discord 频道
设计规范#
架构设计#
taro-hooks 采用 monorepo 结构(pnpm workspaces),核心包与插件分离:
| 包名 | 说明 |
|---|---|
taro-hooks | 核心 Hooks 库(依赖框架无关) |
@taro-hooks/plugin-react | React 框架编译插件 |
@taro-hooks/plugin-vue | Vue3 框架编译插件 |
Hook 命名约定#
- API Hooks:
use + API名称(如useRequest、useStorage、useLocation) - UI Hooks:
use + 交互类型(如useToast、useModal、useActionSheet) - 设备 Hooks:
use + 设备名(如useNetworkType、useVibrate、useSystemInfo)
使用条件#
- 必须配合 Taro 3.x+ 使用(不适用于原生小程序开发)
- 需要安装对应框架的编译插件
- React 项目需要 React 16.8+(Hooks 支持)
- Vue 项目需要 Vue 3.x(Composition API)
审核规范#
taro-hooks 是开发工具库,不涉及平台审核。使用时需注意:
- 小程序后台需配置 request 合法域名(使用
useRequest时) - 网络请求需 HTTPS(所有小程序平台通用要求)
- 部分 Hooks(如
useLocation)需在小程序app.json中声明requiredPrivateInfos
开发指南#
快速上手#
1. 安装依赖
# 安装核心包
npm install taro-hooks
# React 项目:安装 React 插件
npm install @taro-hooks/plugin-react
# Vue3 项目:安装 Vue 插件
npm install @taro-hooks/plugin-vue
2. 配置 Taro 编译器
// config/index.js (React)
const config = {
// ...其他配置
framework: 'react',
plugins: ['@taro-hooks/plugin-react']
}
// config/index.js (Vue3)
const config = {
framework: 'vue3',
plugins: ['@taro-hooks/plugin-vue']
}
3. 使用 Hooks
import { useRequest, useEnv, useToast } from 'taro-hooks'
function MyPage() {
const { env } = useEnv()
const [showToast] = useToast()
const { data, loading, error, run } = useRequest('/api/userInfo', {
manual: true
})
const handleFetch = async () => {
const result = await run()
if (result) {
showToast({ title: '获取成功' })
}
}
return (
<View>
<Text>当前环境: {env}</Text>
<Button onClick={handleFetch} loading={loading}>
获取用户信息
</Button>
</View>
)
}
Vue3 Composition API 用法#
import { useRequest } from 'taro-hooks'
export default {
setup() {
const { data, loading, run } = useRequest('/api/list', {
manual: true
})
return { data, loading, run }
}
}
常见陷阱#
- 必须安装框架插件 — 只装
taro-hooks不装@taro-hooks/plugin-react/plugin-vue会导致编译错误 - Taro 版本兼容 — taro-hooks v2 需配合 Taro 3.6+,老版本 Taro 需用 taro-hooks v1
- ahooks 依赖 — taro-hooks 内置 ahooks 扩展,不需要额外安装 ahooks(同时安装可能版本冲突)
- useRequest manual 模式 — 设置
manual: true后需手动调用run()才会发请求 - Vue2 不支持 — taro-hooks 只支持 Vue3 Composition API,Vue2 Options API 无法使用
- H5 环境差异 — 部分 Hooks(如
useVibrate)在 H5 环境下可能无效或行为不同
生态资源#
相关框架#
| 框架 | 说明 |
|---|---|
| Taro | 跨端开发框架,taro-hooks 的运行基础(36K+⭐) |
| ahooks | 阿里巴巴 React Hooks 库,taro-hooks 的依赖和灵感来源 |
| alova | 请求策略层框架,可作为 taro-hooks useRequest 的增强替代 |
对比参考#
| 方案 | 适用场景 | 区别 |
|---|---|---|
| taro-hooks | Taro + React/Vue3 | 原生 Hooks 封装,深度集成 Taro |
原生 Taro.xxx API | 不使用框架 | 传统回调/Promise 方式 |
| alova + Taro 适配器 | 需要高级请求策略 | 分页/表单/缓存等策略更丰富 |
社区资源#
- GitHub Issues — 问题反馈
- Discord 频道 — 社区交流
- npm:taro-hooks
版本更新#
v2.2.0(最新稳定版,2025-04-06)#
- React 和 Vue3 双框架支持
- ahooks 集成扩展
- useRequest 独立抽象
- 完整 TypeScript 类型定义
- 48 个发布版本
v1.x(旧版,Taro 2.x 兼容)#
- 仅支持 React
- 维护模式(仅 bugfix)
版本选择建议#
| 场景 | 推荐版本 |
|---|---|
| Taro 3.6+ + React/Vue3 新项目 | v2.2.0(npm i taro-hooks@latest) |
| Taro 2.x 旧项目 | v1.x(npm i taro-hooks@1.x) |
| 原生小程序(非 Taro) | 不适用,请使用 miniprogram-api-typings |