Vue 3 Composition API 详解

中等 🟡Vue 生态
3 个标签
预计阅读时间:4 分钟
Vue 3Composition APIsetup

Vue 3 Composition API 详解

Composition API 是 Vue 3 引入的新特性,提供了更灵活的代码组织方式,解决了 Options API 的一些局限性。

Composition API 基础

setup() 函数:

组件的入口点
在 beforeCreate 和 created 之前执行
接收 props 和 context 两个参数
返回的对象会暴露给模板和其他选项

响应式 API:

ref():创建响应式引用
reactive():创建响应式对象
computed():创建计算属性
watch():监听响应式数据
watchEffect():自动追踪依赖的副作用

生命周期钩子:

onBeforeMount
onMounted
onBeforeUpdate
onUpdated
onBeforeUnmount
onUnmounted
onErrorCaptured
onRenderTracked
onRenderTriggered

优势与使用场景

代码组织:

按功能组织代码
逻辑复用更灵活
减少选项 API 的命名冲突

TypeScript 支持:

更好的类型推断
更清晰的类型定义
减少类型断言

逻辑复用:

Composables 模式:Composables是Vue 3引入的组合式API设计模式,通过抽取可复用的逻辑函数实现代码复用,类似React的Custom Hooks,使用use开头命名约定,可以在Vue组件中复用状态和逻辑,Vue官方提供了useMouse、useFetch等内置Composables,开发者也可以创建自定义Composables,是Vue 3最强大的代码复用方式
可重用的逻辑函数
类似于 React Hooks

大型应用:

更好的代码组织
更清晰的逻辑分离
便于维护和测试

响应式 API 详解

ref:

用于基本类型和复杂类型
通过 .value 访问和修改
在模板中自动解包
适合单个值的响应式

reactive:

用于对象和数组
直接访问和修改属性
深度响应
不支持基本类型

computed:

自动缓存
基于依赖更新
可以设置 getter 和 setter
适合派生状态

watch:

可以监听多个源
支持深度监听
支持立即执行
支持回调函数

watchEffect:

自动追踪依赖
立即执行
返回停止函数
适合副作用处理

实际应用

状态管理:

使用 reactive 和 ref 管理组件状态
复杂状态可以使用 Pinia
避免过度使用全局状态

表单处理:

使用 ref 管理表单数据
计算属性验证
响应式验证规则

API 调用:

在 onMounted 中发起请求
使用 ref 管理加载状态
watch 监听参数变化

动画和过渡:

使用 ref 管理动画状态
watchEffect 处理动画逻辑
结合 CSS 动画

迁移策略

从 Options API 迁移:

逐步迁移
混合使用两种 API
使用 Composition API 重构复杂逻辑

常见模式:

提取可复用逻辑为 composables
按功能组织代码
利用 TypeScript 类型

最佳实践

合理使用 ref 和 reactive
按功能组织 composables
避免在 setup 中使用 this
正确处理异步操作
合理使用生命周期钩子
测试 composables
文档化 composables 的用法