使用setData 填充大量数据
发布于 5 年前 作者 ping51 15263 次浏览 来自 问答

比如一个列表,每个项的属性值都很多。要做到无限上拉的话,在data里存一个数组,每次得到新数据了以后在数组后面追加,但是,每次setData都必须把整个数组set进去,数据量太大的话页面会很卡,有没有什么办法能够向数组后面追加新元素呢

5 回复

let temp = this.data.arr_older

for(var i=0;i<arr_append;i++)

{

    temp.push(arr_append[i])

}

this.setData({

    arr_older: temp

})

楼主是这样一个逻辑吧!

不是设置了key值以后 会避免重复渲染吗 ?

这种是常规实现方法,这样写好一点

if(arr_append&&!arr_append.length){

    this.setData({

       arr_older: this.data.arr_older.concat(arr_append)

    })

},

但是我的主要问题是,当arr_older的长度非常长的时候,每一次这样setData会很耗时,即使arr_append的长度很小,所有有没有直接给data追加新增数据的方法


我又回去看了下文档,确实是这样,以前一直以为是防止排序错位的,谢谢了

官方建设一次性加载数据不要超过1024

你可以把Data数组分段,一次加载一段,然后在scroll-view中添加触底监听,监听到再加载第二段,以此类推

回到顶部