Vue数组更新的一点小技巧

本文解决了一个常见的Vue.js问题:当数组的数据更新时,视图未能响应性地更新。通过对比直接赋值与使用splice方法的效果,阐述了正确的更新机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:最近做项目的时候遇到一个问题:数据刷新了但是界面没刷新,弄了好久终于搞定了。

首先来看看官方文档:

由于 JavaScript 的限制,Vue 不能检测以下变动的数组:

  1. 当你利用索引直接设置一个项时,例如:vm.items[indexOfItem] = newValue
  2. 当你修改数组的长度时,例如:vm.items.length = newLength

举个例子:

var vm = new Vue({
  data: {
    items: ['a', 'b', 'c']
  }
})
vm.items[1] = 'x' // 不是响应性的
vm.items.length = 2 // 不是响应性的

所以我的代码换种写法:

// state.inputChannel.channels[res.index].subtitle[res.subtitle.index] = res.subtitle
state.inputChannel.channels[res.index].subtitle.splice(res.subtitle.index)
state.inputChannel.channels[res.index].subtitle[res.subtitle.index] = res.subtitle
然后,换成这种写法后我的界面就监听OK了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值