关于 vueuse-functions
面向 Vue.js 和 Nuxt 项目的 VueUse 组合式函数选择与实现指南。它将需求对应到函数及其用法参考,并优先采用组合式函数而非自定义实现。
主要功能
- 01按需求匹配 VueUse 函数
- 02提供调用规则
- 03涵盖状态、浏览器、传感器和网络 API
- 04要求查阅用法参考
适用场景
- 01为 Vue.js 功能选择组合式函数
- 02实现响应式浏览器或 DOM 行为
- 03确认依赖项的调用规则
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ antfu/ skills --skill vueuse-functions安装后在 Claude Code 中输入/vueuse-functions确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSE.mdreferences/computedAsync.mdcomputedEager.mdcomputedInject.mdcomputedWithControl.mdcreateDisposableDirective.mdcreateEventHook.mdcreateGenericProjection.mdcreateGlobalState.mdcreateInjectionState.mdcreateProjection.mdcreateRef.mdcreateReusableTemplate.mdcreateSharedComposable.mdcreateTemplatePromise.mdcreateUnrefFn.mdextendRef.mdfrom.mdget.mdinjectLocal.mdisDefined.mdlogicAnd.mdlogicNot.mdlogicOr.mdmakeDestructurable.mdonClickOutside.mdonElementRemoval.mdonKeyStroke.mdonLongPress.mdonStartTyping.md详细介绍
VueUse 函数
本技能是一份面向 Vue.js / Nuxt 项目的 VueUse 组合式函数决策与实现指南。它会将需求对应到最合适的 VueUse 函数,采用正确的用法,并优先使用基于组合式函数的方案,而非定制代码,以保持实现简洁、易维护且高效。
适用场景
- 在协助用户进行 Vue.js / Nuxt 开发时,应用本技能。
- 始终先检查是否可以使用 VueUse 函数实现需求。
- 优先使用 VueUse 组合式函数,而非自定义代码,以提升可读性、可维护性和性能。
- 将需求对应到最合适的 VueUse 函数,并遵循该函数的调用规则。
- 请参阅下方函数表中的
Invocation字段。例如:AUTO:适用时自动使用。EXTERNAL:仅当用户已安装所需的外部依赖时使用;否则重新考虑,并仅在确有必要时询问是否安装。EXPLICIT_ONLY:仅在用户明确要求时使用。
注意:提示词或
AGENTS.md中的用户指令可能会覆盖函数默认的Invocation规则。
函数
下方列出的所有函数均属于 VueUse 库,各章节根据函数功能分类。
重要:每个函数条目都包含简短的 Description 和详细的 Reference。使用任何函数时,请务必查阅 ./references 中对应的文档,了解用法详情和类型声明。
状态
| Function | Description | Invocation |
|---|---|---|
createGlobalState | 在全局作用域中保存状态,以便在多个 Vue 实例间重复使用 | AUTO |
createInjectionState | 创建可注入组件的全局状态 | AUTO |
createSharedComposable | 使组合式函数可供多个 Vue 实例使用 | AUTO |
injectLocal | 扩展 inject,可调用 provideLocal 在同一组件中提供值 | AUTO |
provideLocal | 扩展 provide,可调用 injectLocal 在同一组件中获取值 | AUTO |
useAsyncState | 响应式异步状态 | AUTO |
useDebouncedRefHistory | useRefHistory 的简写形式,带防抖筛选器 | AUTO |
useLastChanged | 记录上次更改的时间戳 | AUTO |
useLocalStorage | 响应式 LocalStorage | AUTO |
useManualRefHistory | 用户调用 commit() 时,手动跟踪 ref 的更改历史 | AUTO |
useRefHistory | 跟踪 ref 的更改历史 | AUTO |
useSessionStorage | 响应式 SessionStorage | AUTO |
useStorage | 创建响应式 ref,用于访问和修改 LocalStorage 或 SessionStorage | AUTO |
useStorageAsync | 支持异步操作的响应式 Storage | AUTO |
useThrottledRefHistory | useRefHistory 的简写形式,带节流筛选器 | AUTO |
元素
| 功能 | 描述 | 调用方式 |
|---|---|---|
useActiveElement | 响应式 document.activeElement | AUTO |
useDocumentVisibility | 响应式跟踪 document.visibilityState | AUTO |
useDraggable | 使元素可拖动 | AUTO |
useDropZone | 创建可放置文件的区域 | AUTO |
useElementBounding | HTML 元素的响应式边界框 | AUTO |
useElementSize | HTML 元素的响应式尺寸 | AUTO |
useElementVisibility | 跟踪元素在视口中的可见性 | AUTO |
useIntersectionObserver | 检测目标元素可见性的变化 | AUTO |
useMouseInElement | 与元素相关的响应式鼠标位置 | AUTO |
useMutationObserver | 侦听 DOM 树的变化 | AUTO |
useParentElement | 获取给定元素的父元素 | AUTO |
useResizeObserver | 报告元素内容或边框盒尺寸的变化 | AUTO |
useWindowFocus | 通过 window.onfocus 和 window.onblur 事件响应式跟踪窗口焦点 | AUTO |
useWindowScroll | 响应式窗口滚动位置 | AUTO |
useWindowSize | 响应式窗口尺寸 | AUTO |
浏览器
Sensors
网络
| Function | Description | Invocation |
|---|---|---|
useEventSource | EventSource 或 Server-Sent-Events 实例会与 HTTP 服务建立持久连接 | AUTO |
useFetch | 响应式 Fetch API,支持中止请求 | AUTO |
useWebSocket | 响应式 WebSocket 客户端 | AUTO |
动画
| Function | Description | Invocation |
|---|---|---|
useAnimate | 响应式 Web Animations API | AUTO |
useInterval | 每隔一段时间递增的响应式计数器 | AUTO |
useIntervalFn | 带控制功能的 setInterval 封装 | AUTO |
useNow | 响应式当前 Date 实例 | AUTO |
useRafFn | 每次 requestAnimationFrame 时调用函数 | AUTO |
useTimeout | 在指定时间后变为 true 的响应式值 | AUTO |
useTimeoutFn | 带控制功能的 setTimeout 封装 | AUTO |
useTimestamp | 响应式当前时间戳 | AUTO |
useTransition | 在值之间进行过渡 | AUTO |
组件
| Function | Description | Invocation |
|---|---|---|
computedInject | 组合 computed 和 inject | AUTO |
createReusableTemplate | 在组件作用域内定义并复用模板 | AUTO |
createTemplatePromise | 将模板作为 Promise | AUTO |
templateRef | 将 ref 绑定到模板元素的简写形式 | AUTO |
tryOnBeforeMount | 安全的 onBeforeMount | AUTO |
tryOnBeforeUnmount | 安全的 onBeforeUnmount | AUTO |
tryOnMounted | 安全的 onMounted | AUTO |
tryOnScopeDispose | 安全的 onScopeDispose | AUTO |
tryOnUnmounted | 安全的 onUnmounted | AUTO |
unrefElement | 从 Vue ref 或组件实例中获取底层 DOM 元素 | AUTO |
useCurrentElement | 将当前组件的 DOM 元素作为 ref 获取 | AUTO |
useMounted | ref 中的挂载状态 | AUTO |
useTemplateRefsList | 将 refs 绑定到 v-for 中模板元素和组件的简写形式 | AUTO |
useVirtualList | 轻松创建虚拟列表 | AUTO |
useVModel | v-model 绑定的简写形式 | AUTO |
useVModels | props v-model 绑定的简写形式 | AUTO |
监听
| 函数 | 描述 | 调用方式 |
|---|---|---|
until | 等待变化的一次性 Promise 监听 | AUTO |
watchArray | 监听数组的新增和移除 | AUTO |
watchAtMost | 限制 watch 的触发次数 | AUTO |
watchDebounced | 防抖监听 | AUTO |
watchDeep | 以 {deep: true} 监听值的简写形式 | AUTO |
watchIgnorable | 可忽略的监听 | AUTO |
watchImmediate | 以 {immediate: true} 监听值的简写形式 | AUTO |
watchOnce | 以 { once: true } 监听值的简写形式 | AUTO |
watchPausable | 可暂停的监听 | AUTO |
watchThrottled | 节流监听 | AUTO |
watchTriggerable | 可手动触发的监听 | AUTO |
watchWithFilter | 带有额外 EventFilter 控制的 watch | AUTO |
whenever | 监听值为真值的简写形式 | AUTO |
响应性
| 函数 | 描述 | 调用方式 |
|---|---|---|
computedAsync | 用于异步函数的计算属性 | AUTO |
computedEager | 不进行惰性求值的即时计算属性 | AUTO |
computedWithControl | 显式定义计算属性的依赖项 | AUTO |
createRef | 根据 deep 参数返回 deepRef 或 shallowRef | AUTO |
extendRef | 为 Ref 添加额外属性 | AUTO |
reactify | 将普通函数转换为响应式函数 | AUTO |
reactifyObject | 对对象应用 reactify | AUTO |
reactiveComputed | 计算得到的响应式对象 | AUTO |
reactiveOmit | 响应式地忽略响应式对象中的字段 | AUTO |
reactivePick | 响应式地选取响应式对象中的字段 | AUTO |
refAutoReset | 一段时间后自动重置为默认值的 ref | AUTO |
refDebounced | 对 ref 值的执行进行防抖 | AUTO |
refDefault | 为 ref 应用默认值 | AUTO |
refManualReset | 创建带有手动重置功能的 ref | AUTO |
refThrottled | 对 ref 值的变更进行节流 | AUTO |
refWithControl | 对 ref 及其响应性进行精细控制 | AUTO |
syncRef | 双向 ref 同步 | AUTO |
syncRefs | 使目标 refs 与源 ref 保持同步 | AUTO |
toReactive | 将 ref 转换为响应式对象 | AUTO |
toRef | 将值/ref/getter 规范化为 ref 或 computed | EXPLICIT_ONLY |
toRefs | 扩展版 toRefs,还接受对象的 refs | AUTO |
数组
| 函数 | 描述 | 调用方式 |
|---|---|---|
useArrayDifference | 响应式获取两个数组的差集 | AUTO |
useArrayEvery | 响应式 Array.every | AUTO |
useArrayFilter | 响应式 Array.filter | AUTO |
useArrayFind | 响应式 Array.find | AUTO |
useArrayFindIndex | 响应式 Array.findIndex | AUTO |
useArrayFindLast | 响应式 Array.findLast | AUTO |
useArrayIncludes | 响应式 Array.includes | AUTO |
useArrayJoin | 响应式 Array.join | AUTO |
useArrayMap | 响应式 Array.map | AUTO |
useArrayReduce | 响应式 Array.reduce | AUTO |
useArraySome | 响应式 Array.some | AUTO |
useArrayUnique | 响应式唯一数组 | AUTO |
useSorted | 响应式数组排序 | AUTO |
时间
| 函数 | 描述 | 调用方式 |
|---|---|---|
useCountdown | 响应式倒计时器(秒) | AUTO |
useDateFormat | 根据传入的令牌字符串获取格式化日期 | AUTO |
useTimeAgo | 响应式相对时间 | AUTO |
useTimeAgoIntl | 支持国际化的响应式相对时间 | AUTO |
实用工具
| 函数 | 描述 | 调用方式 |
|---|---|---|
createDisposableDirective | 用于编写可释放指令的实用工具 | AUTO |
createEventHook | 用于创建事件钩子的实用工具 | AUTO |
createUnrefFn | 创建一个可接受 ref 和原始值作为参数的普通函数 | AUTO |
get | 访问 ref.value 的简写 | EXPLICIT_ONLY |
isDefined | 用于 Ref 的非空类型守卫 | AUTO |
makeDestructurable | 使对象和数组同时支持同构解构 | AUTO |
set | ref.value = x 的简写 | EXPLICIT_ONLY |
useAsyncQueue | 按顺序执行每个异步任务,并将当前任务的结果传递给下一个任务 | AUTO |
useBase64 | 响应式地进行 Base64 转换 | AUTO |
useCached | 使用自定义比较器缓存一个 ref | AUTO |
useCloned | 响应式地克隆一个 ref | AUTO |
useConfirmDialog | 创建事件钩子以支持模态框和确认对话框链 | AUTO |
useCounter | 带有实用函数的基础计数器 | AUTO |
useCycleList | 循环遍历项目列表 | AUTO |
useDebounceFn | 对函数执行进行防抖 | AUTO |
useEventBus | 基础事件总线 | AUTO |
useMemoize | 根据参数缓存函数结果并保持其响应性 | AUTO |
useOffsetPagination | 响应式偏移分页 | AUTO |
usePrevious | 保存 ref 的上一个值 | AUTO |
useStepper | 提供用于构建多步向导界面的辅助函数 | AUTO |
useSupported | 兼容 SSR 的 isSupported | AUTO |
useThrottleFn | 对函数执行进行节流 | AUTO |
useTimeoutPoll | 使用超时轮询某项内容 | AUTO |
useToggle | 带有实用函数的布尔切换器 | AUTO |
useToNumber | 响应式地将字符串 ref 转换为数字 | AUTO |
useToString | 响应式地将 ref 转换为字符串 | AUTO |
@Electron
| 函数 | 描述 | 调用方式 |
|---|---|---|
useIpcRenderer | 提供 ipcRenderer 及其所有 API,并支持 Vue 响应性 | EXTERNAL |
useIpcRendererInvoke | 响应式的 ipcRenderer.invoke API 结果 | EXTERNAL |
useIpcRendererOn | 轻松使用 ipcRenderer.on,并在卸载时自动调用 ipcRenderer.removeListener | EXTERNAL |
useZoomFactor | 响应式的 WebFrame 缩放因子 | EXTERNAL |
useZoomLevel | 响应式的 WebFrame 缩放级别 | EXTERNAL |
@Firebase
| 函数 | 描述 | 调用方式 |
|---|---|---|
useAuth | 响应式 Firebase Auth 绑定 | EXTERNAL |
useFirestore | 响应式 Firestore 绑定 | EXTERNAL |
useRTDB | 响应式 Firebase Realtime Database 绑定 | EXTERNAL |
@Head
| 函数 | 描述 | 调用方式 |
|---|---|---|
createHead | 创建 head 管理器实例。 | EXTERNAL |
useHead | 响应式更新 head 元标签。 | EXTERNAL |
@Integrations
| 函数 | 描述 | 调用方式 |
|---|---|---|
useAsyncValidator | async-validator 的封装 | EXTERNAL |
useAxios | axios 的封装 | EXTERNAL |
useChangeCase | change-case 的响应式封装 | EXTERNAL |
useCookies | universal-cookie 的封装 | EXTERNAL |
useDrauu | drauu 的响应式实例 | EXTERNAL |
useFocusTrap | focus-trap 的响应式封装 | EXTERNAL |
useFuse | 使用 Fuse.js 通过组合式函数轻松实现模糊搜索 | EXTERNAL |
useIDBKeyval | idb-keyval 的封装 | EXTERNAL |
useJwt | jwt-decode 的封装 | EXTERNAL |
useNProgress | nprogress 的响应式封装 | EXTERNAL |
useQRCode | qrcode 的封装 | EXTERNAL |
useSortable | sortable 的封装 | EXTERNAL |
@Math
| 函数 | 描述 | 调用方式 |
|---|---|---|
createGenericProjection | createProjection 的通用版本 | EXTERNAL |
createProjection | 在一个定义域到另一个定义域之间进行响应式数值投影 | EXTERNAL |
logicAnd | ref 的 AND 条件 | EXTERNAL |
logicNot | ref 的 NOT 条件 | EXTERNAL |
logicOr | ref 的 OR 条件 | EXTERNAL |
useAbs | 响应式 Math.abs | EXTERNAL |
useAverage | 响应式地获取数组的平均值 | EXTERNAL |
useCeil | 响应式 Math.ceil | EXTERNAL |
useClamp | 响应式地将一个值限制在另外两个值之间 | EXTERNAL |
useFloor | 响应式 Math.floor | EXTERNAL |
useMath | 响应式 Math 方法 | EXTERNAL |
useMax | 响应式 Math.max | EXTERNAL |
useMin | 响应式 Math.min | EXTERNAL |
usePrecision | 响应式地设置数字的精度 | EXTERNAL |
useProjection | 在一个定义域到另一个定义域之间进行响应式数值投影 | EXTERNAL |
useRound | 响应式 Math.round | EXTERNAL |
useSum | 响应式地获取数组的总和 | EXTERNAL |
useTrunc | 响应式 Math.trunc | EXTERNAL |
@Motion
| 函数 | 描述 | 调用方式 |
|---|---|---|
useElementStyle | 将响应式对象同步到目标元素的 CSS 样式 | EXTERNAL |
useElementTransform | 将响应式对象同步到目标元素的 CSS 变换。 | EXTERNAL |
useMotion | 让组件动起来。 | EXTERNAL |
useMotionProperties | 访问目标元素的 Motion 属性。 | EXTERNAL |
useMotionVariants | 处理变体状态和选择。 | EXTERNAL |
useSpring | 弹簧动画。 | EXTERNAL |
@Router
| 函数 | 描述 | 调用方式 |
|---|---|---|
useRouteHash | 响应式 route.hash 的简写 | EXTERNAL |
useRouteParams | 响应式 route.params 的简写 | EXTERNAL |
useRouteQuery | 响应式 route.query 的简写 | EXTERNAL |
@RxJS
| 函数 | 描述 | 调用方式 |
|---|---|---|
from | RxJS 的 from() 和 fromEvent() 的封装,使其能够接受 ref | EXTERNAL |
toObserver | 将 ref 转换为 RxJS Observer 的便捷函数 | EXTERNAL |
useExtractedObservable | 使用从一个或多个组合式函数中提取的 RxJS Observable | EXTERNAL |
useObservable | 使用 RxJS Observable | EXTERNAL |
useSubject | 将 RxJS Subject 绑定到 ref,并双向传播值变化 | EXTERNAL |
useSubscription | 使用 RxJS Subscription,无需担心取消订阅或造成内存泄漏 | EXTERNAL |
watchExtractedObservable | 监视从一个或多个组合式函数中提取的 RxJS Observable 的值 | EXTERNAL |
@SchemaOrg
| 函数 | 描述 | 调用方式 |
|---|---|---|
createSchemaOrg | 创建 schema.org 管理器实例。 | EXTERNAL |
useSchemaOrg | 响应式更新 schema.org。 | EXTERNAL |
@Sound
| 函数 | 描述 | 调用方式 |
|---|---|---|
useSound | 响应式播放音效。 | EXTERNAL |
评论
支持 Markdown