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

Vue 3中如何更新ref所包裹数组内部的单个属性值?

Vue3 ref包裹数组更新元素属性的实现方案

首先修正你示例代码的语法错误:JavaScript对象的键值对使用:作为分隔符,不支持=>写法,修正后基础代码如下:

export default defineComponent({
  setup() {
    const allQuestions = ref([{"like": 1},{"like": 0}]);
  }
})

要更新第二个元素的like属性,有两种常用的正确实现方式:

  • 方式1:直接修改属性
    Vue3基于Proxy实现的响应式系统支持直接修改数组元素的属性,可正常触发响应式更新,写法如下:
allQuestions.value[1].like = 1;

注意:该写法仅适用于Vue3,Vue2的响应式系统无法监听到通过索引修改数组元素、直接修改数组长度的操作。

  • 方式2:全量替换数组
    该写法兼容性更强,Vue2、Vue3版本通用,通过生成新数组替换旧数组的方式触发响应式更新:
allQuestions.value = allQuestions.value.map((item, index) => 
  index === 1 ? {...item, like: 1} : item
)

如果是Vue2的Options API场景,还可以使用$set方法实现更新:

this.$set(this.allQuestions, 1, {...this.allQuestions[1], like: 1})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:27:02