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

Vue中普通数组无法触发响应式更新问题求助

问题原因及解决办法

你的问题出在**entries不是响应式数据**——Vue无法追踪普通JavaScript数组的变化,所以你调用push修改数组后,页面不会自动更新。

两种修复方案:

方案1:用ref创建响应式数组

这是处理简单数组最常用的方式:

<template>
  <button @click="entries.push(3)">
    Press me!
  </button>
  <ul>
    <li v-for="entry in entries" :key="entry">
      {{ entry }}
    </li>
  </ul>
</template>

<script setup>
import { ref } from 'vue'
// 用ref包裹数组,创建响应式数据
const entries = ref([1, 2])
</script>

模板代码不用修改,因为Vue会自动解包ref对象的.value属性,直接使用变量名即可。

方案2:用reactive创建响应式对象包裹数组

如果需要管理多个关联数据,适合用这种方式:

<template>
  <button @click="state.entries.push(3)">
    Press me!
  </button>
  <ul>
    <li v-for="entry in state.entries" :key="entry">
      {{ entry }}
    </li>
  </ul>
</template>

<script setup>
import { reactive } from 'vue'
// 把数组放在reactive对象中,保持引用不变
const state = reactive({
  entries: [1, 2]
})
</script>

Vue的响应式系统依赖自身提供的API(ref/reactive)包装数据,才能追踪数据变化并触发页面更新,普通JS变量无法被Vue的响应式机制识别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:12:09