一、Vue 3.4 核心特性概览
Vue 3.4 代号「🏀 Slam Dunk」,带来多项关键升级:
- 模板解析器性能翻倍:单文件组件(SFC)构建效率提升 44%,解析速度提升 2 倍。
- 响应式系统优化:计算属性和
watchEffect触发更精准,减少无效渲染。 - Effect 作用域 API 稳定:通过
effectScope和onScopeDispose实现副作用的细粒度管理,解决内存泄漏痛点。 defineModel宏成熟:简化v-model组件开发,支持修饰符语法。
本文结合实战案例,深度解析 Composition API 与 Effect 作用域 API,助你提升代码组织能力与开发效率。
二、Composition API 核心能力实战
2.1 响应式数据管理
基础类型与复杂对象的选择
ref:用于基础类型(如数字、字符串),返回带.value的响应式引用:<script setup> import { ref } from 'vue' const count = ref(0) // 基础类型响应式 </script>reactive:用于对象/数组,返回响应式代理:<script setup> import { reactive } from 'vue' const state = reactive({ user: { name: 'Alice' }, todos: [] }) // 复杂数据响应式 </script>
响应式解构:保持数据关联
通过 toRefs 解构对象,避免失去响应式:
<script setup>
import { reactive, toRefs } from 'vue'
const state = reactive({ score: 100, user: { name: 'Bob' } })
const { score, user } = toRefs(state) // 解构后属性仍为响应式
</script>
2.2 组合函数:逻辑复用的「瑞士军刀」
将可复用逻辑封装为独立函数,提升代码复用性。
示例:带本地存储的计数器
// usePersistedCounter.js
import {
ref, watch, onMounted } from 'vue'
export function usePersistedCounter(key, initialValue = 0) {
const count = ref(initialValue)
// 加载本地数据
onMounted(() => {
const stored = localStorage.getItem(key)
if (stored) count.value = parseInt(stored)
})
// 保存数据到本地
watch(count, (val) => localStorage.setItem(key, val.toString

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



