useCounter:简单的组合式函数
计数 ref、递增/递减函数、重置,以及仅暴露所需内容
useCounter:简单的组合式函数 是 CoddyKit 上的免费 Vue Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Vue Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Vue Academy 课程共包含 4 节课。
构建 useCounter
我们将编写一个小巧但完整的组合式函数:useCounter。它管理一个数字,并提供用于修改该数字的方法,是第一个组合式函数的理想示例。
接受初始值
为函数提供一个带默认值的 initial 参数,这样调用者就可以从任意数值开始计数。
function useCounter(initial = 0) {
// ...
}内部计数引用
在函数内部,为计数创建一个 ref,并使用初始值为其设定初值。这就是该组合式函数所拥有的响应式状态。
import { ref } from "vue";
function useCounter(initial = 0) {
const count = ref(initial);
}递增函数
定义一个修改引用的函数。由于 count 具有响应性,每个消费者都会自动更新。
function increment() {
count.value++;
}递减与重置
添加互补的操作。reset 使用闭包中捕获的原始 initial 值。
function decrement() {
count.value--;
}
function reset() {
count.value = initial;
}返回接口
返回一个包含响应式状态和所有方法的对象。这就是组合式函数的公共接口。
return { count, increment, decrement, reset };完整的组合式函数
组合起来看,整个实现十分简洁,可以在任意组件中复用。
import { ref } from "vue";
export function useCounter(initial = 0) {
const count = ref(initial);
const increment = () => count.value++;
const decrement = () => count.value--;
const reset = () => count.value = initial;
return { count, increment, decrement, reset };
}在组件中使用
在 <script setup> 中调用它并进行解构。模板可以直接使用 count(会自动解包),并绑定这些方法。
const { count, increment, decrement, reset } = useCounter(10);在模板中
将这些方法绑定到按钮上。每次点击都会修改共享引用,视图也会随之更新。
<button @click="decrement">-</button>
<span>{{ count }}</span>
<button @click="increment">+</button>独立实例
每次调用 useCounter 都会创建自己的 count 引用。两个调用它的组件会得到彼此分离、互不影响的计数器。
const a = useCounter(); // own count
const b = useCounter(100); // own count添加计算属性
您可以为组合式函数添加派生状态,例如 isZero 计算属性,并将其与其他内容一起返回。
import { computed } from "vue";
const isZero = computed(() => count.value === 0);
// add to return: { count, isZero, increment, ... }快速检查
为什么每次调用 useCounter 都会获得自己的状态?
回顾
您构建了 useCounter(initial):包含内部 count 引用、increment/decrement/reset 函数,以及一个公开响应式状态和方法的返回对象。每次调用都会产生一个独立实例。
常见问题解答
「useCounter:简单的组合式函数」课时是免费的吗?
是的 — 「useCounter:简单的组合式函数」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Vue Academy 课程的其余内容,请升级到 CoddyKit PRO。 Vue Academy 课程共包含 4 节课。
「useCounter:简单的组合式函数」这节课中我会学到什么?
计数 ref、递增/递减函数、重置,以及仅暴露所需内容 你通过在浏览器中直接运行的动手代码来练习 Vue Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Vue Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Vue Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「useCounter:简单的组合式函数」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Vue Academy 课中编写并运行代码吗?
能。每节 Vue Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 优秀组合式函数的特征
- useCounter:简单的组合式函数
- useFetch:异步数据组合式函数
- VueUse:组合式函数库