watch深度监听数组_关于watch监听数组的问题

注意:在变异 (不是替换) 对象或数组时,旧值将与新值相同,因为它们的引用指向同一个对象/数组。Vue 不会保留变异之前值的副本。

这样是可以监听到的

mounted() {

this.$service.enableInvoiceOrders(this.$route.params.orderType).then(res => {

console.log(res)

if (res.code == 0) {

// watch监听数组先处理初始值 再赋值 最后再监听

//我的理解也就是会监听两次一次判断是否数组 一次赋值是否变异

res.data.records.forEach(item => {

item.isSelectItem = false

})

this.orderArr = res.data.records

// 相当于变异了

// this.orderArr.forEach(item => {

// item.isSelectItem = false

// })

}

})

},

watch: {

orderArr: {

deep: true,

handler(val, oldVal) {

console.log(val, '==数据==')

this.ischeckAll = val.every(item => {

return item.isSelectItem

})

}

}

}

这样监听不到

mounted() {

this.$service.enableInvoiceOrders(this.$route.params.orderType).then(res => {

console.log(res)

if (res.code == 0) {

this.orderArr = res.data.records

// 相当于变异了

this.orderArr.forEach(item => {

item.isSelectItem = false

})

}

})

},

watch: {

orderArr: {

deep: true,

handler(val, oldVal) {

console.log(val, '==数据==')

this.ischeckAll = val.every(item => {

return item.isSelectItem

})

}

}

}

关于深度监听 如果数组不深度监听 相当于只监听一个数组的地址

注意:最好不要监听数组或者对象 这样内存消耗比较大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值