当前位置:首页 > VUE

vue实现数组监听

2026-03-09 08:06:25VUE

Vue 实现数组监听的方法

Vue 通过重写数组的变异方法来监听数组变化,但直接通过索引修改数组或修改数组长度时无法触发响应式更新。以下是几种实现数组监听的方法:

使用 Vue.set 或 vm.$set

对于通过索引直接修改数组元素的情况,可以使用 Vue.set 或实例方法 vm.$set

vue实现数组监听

this.$set(this.array, index, newValue);

使用数组的变异方法

Vue 重写了以下数组方法,使用它们会自动触发视图更新:

vue实现数组监听

  • push()
  • pop()
  • shift()
  • unshift()
  • splice()
  • sort()
  • reverse()
this.array.splice(index, 1, newValue);

监听数组变化

可以通过 watch 监听数组变化,设置 deep: true 可以深度监听。

watch: {
  array: {
    handler(newVal, oldVal) {
      console.log('数组变化了');
    },
    deep: true
  }
}

使用 computed 属性

通过计算属性返回数组的某个状态,当数组变化时计算属性会自动更新。

computed: {
  arrayLength() {
    return this.array.length;
  }
}

注意事项

  • 直接修改数组长度(如 this.array.length = 0)不会触发更新,应使用 splice 替代。
  • 对于嵌套数组或对象,确保它们也是响应式的。
  • 在 Vue 3 中,使用 reactiveref 创建的数组可以直接通过索引修改并触发更新。

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

相关文章

vue实现继承语法糖

vue实现继承语法糖

在Vue中实现继承可以通过多种方式模拟类继承的效果,以下是常见的几种方法: 使用mixins实现逻辑复用 通过Vue的mixins机制共享组件选项,达到类似继承的效果: const BaseCom…

django vue实现

django vue实现

Django与Vue.js整合实现方案 Django作为后端框架与Vue.js作为前端框架的整合,可以通过以下方式实现: 分离式开发 前后端完全分离,Django仅提供API接口,Vue.js通过a…

vue vnode实现

vue vnode实现

Vue VNode 实现原理 VNode(Virtual Node)是 Vue 的核心概念之一,用于描述真实 DOM 的轻量级虚拟表示。VNode 的实现涉及以下关键点: VNode 的基本结构 V…

vue实现素材

vue实现素材

Vue 实现素材的方法 使用 Vue 组件管理素材 在 Vue 项目中,可以通过组件化的方式管理素材。创建一个专门的组件来加载和显示素材,例如图片、视频或音频文件。组件可以接收素材的路径或 URL 作…

vue observer实现

vue observer实现

Vue Observer 实现原理 Vue 的响应式系统核心是通过 Object.defineProperty(Vue 2)或 Proxy(Vue 3)实现的 Observer 模式。以下是关键实现细…

vue实现swipe

vue实现swipe

Vue实现Swipe功能的方法 使用第三方库(推荐) Vue生态中有多个成熟的轮播/滑动组件库,例如vue-awesome-swiper或swiper/vue。以下是基于swiper/vue的实现示例…