ref适用于所有类型,必须用.value访问;reactive仅支持对象/数组,直接属性访问;基本类型必须用ref,复杂结构推荐reactive。

Vue 中的 ref 本身不区分“Ref 数组”或“Ref 对象”这种说法——它统一包装任意值,但数组和对象在使用方式、响应行为和实际注意事项上确实有明显差异。关键不在 ref 类型,而在于你用 ref 包什么、怎么改、怎么读。
ref 包数组:得靠 .value 访问,但修改要小心
ref 可以安全包装数组,比如 const list = ref([1, 2, 3])。它能响应式,但要注意:
- 读取时必须写
list.value(例如list.value.length或list.value[0]) - 修改数组内容时,推荐用 Vue 能捕获的原生方法:
push()、pop()、splice()、sort()等——这些会触发视图更新 - 避免直接赋值新数组(如
list.value = [4, 5, 6]),虽然有效,但会丢失原有响应式连接;更稳妥的是用list.value.splice(0, list.value.length, ...newArray) - 不能用
map、filter、slice这类返回新数组的方法直接更新,因为它们不改原数组,Vue 捕捉不到变化
ref 包对象:可响应,但嵌套深了不如 reactive 直观
ref 也能包装对象,例如 const user = ref({ name: 'Alice', age: 30 }),但它和 reactive 的体验不同:
vue-composition-api-best-practices
Vue 3 组合式 API 与
热门下载
相关下载
精品课程
相关推荐
/
热门推荐
/
最新课程
最新文章
