create-adaptable-composable by vuejs-ai/skills
npx skills add https://github.com/vuejs-ai/skills --skill create-adaptable-composable自适应组合式函数是可重用的函数,能够同时接受响应式和非响应式输入。这使得开发者可以在多种上下文中使用组合式函数,而无需担心输入的响应性。
在 Vue.js 中设计自适应组合式函数的步骤:
toValue() 或 toRef() 来规范化输入。/**
* 值或可写的 ref(值/ref/shallowRef/可写的 computed)
*/
export type MaybeRef<T = any> = T | Ref<T> | ShallowRef<T> | WritableComputedRef<T>;
/**
* MaybeRef<T> + ComputedRef<T> + () => T
*/
export type MaybeRefOrGetter<T = any> = MaybeRef<T> | ComputedRef<T> | (() => T);
MaybeRefOrGetterMaybeRef广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
MaybeRefOrGetter,否则可能会意外地将其作为 getter 调用。MaybeRefOrGetter。当使用 MaybeRefOrGetter 或 MaybeRef 时:
toRef() 解析响应式值(例如 watcher 源)toValue() 解析非响应式值自适应的 useDocumentTitle 组合式函数:只读的 title 参数
import { watch, toRef } from 'vue'
import type { MaybeRefOrGetter } from 'vue'
export function useDocumentTitle(title: MaybeRefOrGetter<string>) {
watch(toRef(title), (t) => {
document.title = t
}, { immediate: true })
}
自适应的 useCounter 组合式函数:双向可写的 count 参数
import { watch, toRef } from 'vue'
import type { MaybeRef } from 'vue'
function useCounter(count: MaybeRef<number>) {
const countRef = toRef(count)
function add() {
countRef.value++
}
return { add }
}
每周安装量
3.9K
代码仓库
GitHub 星标
2.0K
首次出现
2026 年 1 月 28 日
安全审计
安装于
opencode3.2K
codex3.1K
gemini-cli3.0K
github-copilot2.9K
kimi-cli2.7K
cursor2.7K
Adaptable composables are reusable functions that can accept both reactive and non-reactive inputs. This allows developers to use the composable in a variety of contexts without worrying about the reactivity of the inputs.
Steps to design an adaptable composable in Vue.js:
toValue() or toRef() to normalize inputs inside reactive effects./**
* value or writable ref (value/ref/shallowRef/writable computed)
*/
export type MaybeRef<T = any> = T | Ref<T> | ShallowRef<T> | WritableComputedRef<T>;
/**
* MaybeRef<T> + ComputedRef<T> + () => T
*/
export type MaybeRefOrGetter<T = any> = MaybeRef<T> | ComputedRef<T> | (() => T);
MaybeRefOrGetterMaybeRefMaybeRefOrGetter, or you may accidentally invoke it as a getter.MaybeRefOrGetter.When MaybeRefOrGetter or MaybeRef is used:
toRef() (e.g. watcher source)toValue()Adaptable useDocumentTitle Composable: read-only title parameter
import { watch, toRef } from 'vue'
import type { MaybeRefOrGetter } from 'vue'
export function useDocumentTitle(title: MaybeRefOrGetter<string>) {
watch(toRef(title), (t) => {
document.title = t
}, { immediate: true })
}
Adaptable useCounter Composable: two-way writable count parameter
import { watch, toRef } from 'vue'
import type { MaybeRef } from 'vue'
function useCounter(count: MaybeRef<number>) {
const countRef = toRef(count)
function add() {
countRef.value++
}
return { add }
}
Weekly Installs
3.9K
Repository
GitHub Stars
2.0K
First Seen
Jan 28, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
opencode3.2K
codex3.1K
gemini-cli3.0K
github-copilot2.9K
kimi-cli2.7K
cursor2.7K
React 组合模式指南:Vercel 组件架构最佳实践,提升代码可维护性
102,200 周安装