数组清空的方法vue

我之前遇到过一个类似的问题,就是在 2022 年的一个项目中,我在 Vue 中处理一个数组,需要清空它。当时我试了好几种方法,比如说用数组的 length 属性来清空,我写了个 this.items.length = 0;然后刷新页面发现并没有效果,我当时也懵了。后来我翻看了文档,我后来才反应过来,原来 Vue 的数组响应式更新不会触发视图的更新,除非这个数组是响应式数据源的一部分。
所以我换了一种方法,我使用了 Vue 的方法来操作数组,我写了个 this.items.splice(0, this.items.length);这次页面就响应了。这个过程可能让我有些偏激,我觉得 Vue 的文档在这方面可以更详细一点。总之,我用了这个方法清空了数组。
说起这个数组清空的方法在Vue里,我还真是有点印象。记得那会儿我在一个项目里,有个数据展示的页面,需要动态加载数据,结果有一次,数据量特别大,导致页面卡死,我就头疼了老半天。
当时,我用的Vue版本是2.6.11,我就想了个办法,在methods里写了个方法来清空数组。是这样的,我定义了一个方法叫clearArray,然后直接调用这个方法就能清空数组了。代码大概长这样:
javascript methods: { clearArray() { this.myArray = []; } }
然后,在某个时机,比如用户点击一个按钮,我就调用这个方法:

结果呢,效果是达到了,数组清空了,页面也流畅了。但是呢,后来我反思了一下,这种方法虽然简单,但是它没有处理数组的引用问题。也就是说,如果这个数组在其他地方也被引用了,那么清空操作可能不会影响那些引用点。
后来我换了一个思路,我用了一个新的数组来接收数据,每次加载数据之前,先把旧数组替换掉,这样就避免了引用问题。代码大概是这样的:
javascript data() { return { myArray: [] } }, methods: { loadData(newData) { this.myArray = newData; } }
然后,在获取新数据的地方调用loadData方法,传入新的数据数组。
说回那个坑,我印象中是2018年左右的事情,在成都的一个项目里,那时候项目刚上线不久,遇到的问题真是五花八门。不过,这些经历也让我对Vue的数据处理有了更深的理解。
嗯,对了,还有一点,如果你是在Vue 3里做这个,可能会有更简单的办法,因为我这边没有太多Vue 3的项目经验,这块我就不敢乱讲了。

相关推荐