当前位置:首页 > VUE

vue实现数组监听

2026-03-29 19:46:08VUE

Vue 中实现数组监听的方法

Vue 通过重写数组的原型方法来实现对数组变化的监听。由于 JavaScript 的限制,Vue 无法直接通过 Object.defineProperty 监听数组索引的变化。以下是几种常见的实现方式:

使用 Vue.set 或 this.$set

对于直接通过索引修改数组元素的情况,需要使用 Vue.setthis.$set 来确保修改能被响应式系统检测到。

vue实现数组监听

this.$set(this.array, index, newValue);
// 或
Vue.set(this.array, index, newValue);

使用数组的变异方法

Vue 重写了数组的以下变异方法,这些方法会触发视图更新:

  • push()
  • pop()
  • shift()
  • unshift()
  • splice()
  • sort()
  • reverse()
this.array.push(newItem); // 自动触发响应式更新

监听数组变化

可以通过 watch 监听数组的变化:

vue实现数组监听

watch: {
  array: {
    handler(newVal, oldVal) {
      // 处理数组变化
    },
    deep: true // 深度监听
  }
}

使用计算属性

如果需要基于数组的变化生成新的数据,可以使用计算属性:

computed: {
  filteredArray() {
    return this.array.filter(item => item.condition);
  }
}

使用 Vue 3 的响应式 API

在 Vue 3 中,可以使用 reactiveref 来创建响应式数组:

import { reactive, ref } from 'vue';

const array = reactive([]);
// 或
const array = ref([]);

注意事项

  • 直接通过索引修改数组元素(如 this.array[index] = newValue)不会触发响应式更新。
  • 直接修改数组长度(如 this.array.length = newLength)也不会触发更新。
  • 对于嵌套数组或对象,需要确保它们也是响应式的。

标签: 数组vue
分享给朋友:

相关文章

vue实现div

vue实现div

Vue 实现 DIV 元素的方法 在 Vue 中实现 DIV 元素可以通过多种方式,以下是几种常见的实现方法: 使用模板语法 在 Vue 的模板中直接使用 HTML 的 <div> 标签…

vue实现sso

vue实现sso

Vue 实现 SSO(单点登录)方案 单点登录(SSO)允许用户通过一次登录访问多个相关系统。以下是基于 Vue 的实现方案: 使用 OAuth2/OpenID Connect 协议 OAuth2…

vue实现listview

vue实现listview

Vue 实现 ListView 的方法 基础列表渲染 使用 v-for 指令可以轻松实现基础列表渲染。在 Vue 中,v-for 用于遍历数组或对象,生成动态列表。 <template>…

vue实现修改

vue实现修改

Vue 实现修改功能的方法 在 Vue 中实现修改功能通常涉及表单绑定、状态管理和 API 调用。以下是几种常见实现方式: 双向数据绑定实现表单修改 使用 v-model 指令绑定表单元素与组件数据…

vue如何实现mvvm

vue如何实现mvvm

Vue 实现 MVVM 的核心机制 Vue 的 MVVM(Model-View-ViewModel)实现依赖于数据绑定和响应式系统,通过以下核心机制完成: 数据劫持(响应式系统) Vue 使用 Ob…

vue实现pdf预览

vue实现pdf预览

使用 vue-pdf 库实现 PDF 预览 安装 vue-pdf 库: npm install vue-pdf 在 Vue 组件中引入并使用: <template> <div…