You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue3 Composition API中如何更新响应式数组内对象属性

高效更新Vue 3响应式数组中对象属性的方案

在Vue 3 Composition API中,你完全不需要通过重新赋值数组来触发重渲染——直接修改对象的已有属性即可自动触发响应式更新,这是性能最优的方式。

核心原理

用ref创建的数组,其内部的对象会被Vue自动处理为深度响应式结构。当你修改对象的已有属性时,Vue的响应式系统会自动追踪到这个变化,并触发组件重渲染,无需额外操作。

优化后的代码

<template>
  <div>
    <div v-for="item in arr" :key="item.id">
      {{ item.name }}
      <button @click="updateName(item)">Update Name</button>
    </div>
  </div>
</template>

<script setup>
import { ref } from 'vue';

const arr = ref([
  { id: 1, name: 'Object 1' },
  { id: 2, name: 'Object 2' },
]);

const updateName = (item) => {
  // 直接修改对象属性即可触发响应式更新
  item.name = `Updated ${item.name}`;
  
  // 若需通过id定位对象修改,同样无需重新赋值数组
  // const target = arr.value.find(e => e.id === item.id);
  // if (target) target.name = 'Object 3';
};
</script>

特殊场景补充

如果需要给对象新增属性(而非修改已有属性),才需要使用Vue.set或通过索引更新的方式,但你的场景是修改已有属性,因此不需要额外处理。

内容的提问来源于stack exchange,提问作者Elie Asmar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 06:40:58