小程序
小游戏
企业微信
微信支付
扫描小程序码分享
比如一个列表,每个项的属性值都很多。要做到无限上拉的话,在data里存一个数组,每次得到新数据了以后在数组后面追加,但是,每次setData都必须把整个数组set进去,数据量太大的话页面会很卡,有没有什么办法能够向数组后面追加新元素呢
5 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
我又回去看了下文档,确实是这样,以前一直以为是防止排序错位的,谢谢了
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
不是设置了key值以后 会避免重复渲染吗 ?
这种是常规实现方法,这样写好一点
if(arr_append&&!arr_append.length){
this.setData({
arr_older: this.data.arr_older.concat(arr_append)
})
},
但是我的主要问题是,当arr_older的长度非常长的时候,每一次这样setData会很耗时,即使arr_append的长度很小,所有有没有直接给data追加新增数据的方法
let temp = this.data.arr_older
for(var i=0;i<arr_append;i++)
{
temp.push(arr_append[i])
}
arr_older: temp
楼主是这样一个逻辑吧!
官方建设一次性加载数据不要超过1024
你可以把Data数组分段,一次加载一段,然后在scroll-view中添加触底监听,监听到再加载第二段,以此类推
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
我又回去看了下文档,确实是这样,以前一直以为是防止排序错位的,谢谢了
不是设置了key值以后 会避免重复渲染吗 ?
这种是常规实现方法,这样写好一点
if(arr_append&&!arr_append.length){
this.setData({
arr_older: this.data.arr_older.concat(arr_append)
})
},
但是我的主要问题是,当arr_older的长度非常长的时候,每一次这样setData会很耗时,即使arr_append的长度很小,所有有没有直接给data追加新增数据的方法
let temp = this.data.arr_older
for(var i=0;i<arr_append;i++)
{
temp.push(arr_append[i])
}
this.setData({
arr_older: temp
})
楼主是这样一个逻辑吧!
官方建设一次性加载数据不要超过1024
你可以把Data数组分段,一次加载一段,然后在scroll-view中添加触底监听,监听到再加载第二段,以此类推