news 2026/6/1 20:58:09

Vue3组合式API实战教程:告别Options API的繁琐,代码复用性暴涨

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vue3组合式API实战教程:告别Options API的繁琐,代码复用性暴涨

前言

Vue3 引入的组合式 API(Composition API)彻底改变了组件逻辑的组织方式。相比于 Vue2 的 Options API(data、methods、computed 分块),组合式 API 允许我们按逻辑关注点聚合代码,让复杂组件的可读性和复用性大幅提升。本文会用 5 个对比案例带你快速上手。

一、核心概念

setup:组件中组合式 API 的入口,在 beforeCreate 之前执行

ref:包装基本类型为响应式对象,访问时需 .value

reactive:包装对象/数组,直接访问属性即可

computed:计算属性

watch/watchEffect:侦听数据变化

二、代码对比:计数器(最简单的迁移)

Options API 写法

<template><button @click="increment">count:{{count}}</button></template><script>exportdefault{data(){return{count:0}},methods:{increment(){this.count++}}}</script>

Composition API 写法

<template><button @click="increment">count:{{count}}</button></template><script setup>import{ref}from'vue'constcount=ref(0)constincrement=()=>{count.value++}</script>

三、实战:用户信息表单(逻辑分离)

<template><div><inputv-model="form.name"placeholder="姓名"><inputv-model="form.email"placeholder="邮箱"><p>校验结果:{{validationMsg}}</p></div></template><script setup>import{reactive,computed,watch}from'vue'//响应式表单数据constform=reactive({name:'',email:''})//计算属性:实时校验constvalidationMsg=computed(()=>{if(!form.name) return '请填写姓名'if(!form.email.includes('@')) return '邮箱格式不正确'return'信息完整'})//侦听表单变化,模拟保存草稿 watch(form,(newVal)=>{console.log('表单变化:', newVal)//可调用接口保存草稿},{deep:true})</script>

四、逻辑复用(Composables)—— 最大的优势

假设多个组件都需要获取鼠标位置,传统 mixins 容易有命名冲突,而组合式 API 可以抽离成独立函数:

useMousePosition.js

import{ref,onMounted,onUnmounted}from'vue'exportfunctionuseMousePosition(){constx=ref(0)consty=ref(0)constupdate=(e)=>{x.value=e.pageX y.value=e.pageY}onMounted(()=>window.addEventListener('mousemove',update))onUnmounted(()=>window.removeEventListener('mousemove',update))return{x,y}}

在组件中使用

<template><div>鼠标位置:{{x}},{{y}}</div></template><script setup>import{useMousePosition}from'./useMousePosition'const{x,y}=useMousePosition()</script>

五、生命周期映射

Options API Composition API (在 setup 中)
created 直接写(setup 本身执行时)
mounted onMounted(() => {})
updated onUpdated(() => {})
unmounted onUnmounted(() => {})

总结

组合式 API 不是要完全替代 Options API,而是在组件逻辑复杂时提供更好的组织方式。建议新项目直接使用

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/1 20:58:09

如何快速激活Windows和Office:开源智能激活工具的完整指南

如何快速激活Windows和Office&#xff1a;开源智能激活工具的完整指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统频繁弹出激活提示而烦恼吗&#xff1f;Office文档突然变…

作者头像 李华
网站建设 2026/6/1 20:54:03

MAA明日方舟自动化助手:5个步骤实现游戏效率革命

MAA明日方舟自动化助手&#xff1a;5个步骤实现游戏效率革命 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手&#xff0c;全日常一键长草&#xff01;| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://gitcode.…

作者头像 李华
网站建设 2026/6/1 20:50:10

AI 辅助开发引争议:rsync 稳定性与迭代速度的尖锐冲突

【导语&#xff1a;一条 GitHub issue 让经典同步工具 rsync 陷入开源社区风暴&#xff0c;起因是维护者引入 AI 辅助开发后出现回归问题&#xff0c;引发社区争议&#xff0c;背后反映出稳定性与快速迭代的矛盾。】AI 引入引发 rsync 回归问题rsync 的维护者 tridge 在项目中引…

作者头像 李华
网站建设 2026/6/1 20:49:07

QMC音频解密器:快速解锁QQ音乐加密文件的完整指南

QMC音频解密器&#xff1a;快速解锁QQ音乐加密文件的完整指南 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 还在为QQ音乐下载的音频文件无法在其他播放器播放而烦恼吗&am…

作者头像 李华