这篇文章已经发布超过一年了,内容可能已经过时,请谨慎参考。
响应式
响应式基础
- 声明响应式状态
ref()
特性 | ref | reactive |
---|---|---|
数据类型 | 支持所有类型 | 仅支持对象/数组 |
访问方式 | 通过 .value 访问 | 直接访问属性 |
模板自动解包 | 在模板中自动解包(无需 .value) | 始终直接访问属性 |
重新赋值 | 允许重新赋值整个对象 | 不能直接替换整个对象 |
深层响应性 | 自动深度响应 | 自动深度响应 |
解包行为 | 嵌套在对象中时需 .value 访问 | 嵌套的 ref 自动解包 |
适用场景 | 基本类型、需要重新赋值的变量 | 复杂对象、不需要替换整个对象时 |
TypeScript 支持 | 明确的类型推断 | 可能丢失部分类型提示 |
响应式丢失问题 | 无(通过 .value 保持响应) | 解构或重新赋值时可能丢失响应性 |
典型用法 | const num = ref(0) | const state = reactive({…}) |
数组处理 | 需要 .value 操作数组方法 | 直接使用原生数组方法 |
与计算属性配合 | 常与 computed 一起使用 | 常与 toRefs 配合解构 |