问题分析
在vue3中props是只读的,因为数组存在于堆中,因此Vue 的响应式系统可以检测到以下数组的变动操作:push()、pop()、shift()、unshift()、splice() 和 sort()。如果你对数组进行其他变动操作(例如直接给数组索引赋值或使用索引方式删除元素),Vue 的响应式系统可能无法正确检测到变化,从而无法触发更新。
因为vue3中移除了$set
,因此也用不了$set
直接复制 xxx = [] 是需要去更换内存的,props是只读的,因此不允许操作.
因此想到将数组长度设置为0,因为截断数组并将其长度设置为 0 不会立即释放内存,而是等待 JavaScript 引擎在适当的时机进行垃圾回收。
解决问题
xxx.length = 0