小程序如何动态删除指定的cover-view?
发布于 6 年前 作者 dqian 2085 次浏览 来自 官方Issues

聊天系统发送的内容需要逐条显示,但是一直显示不删除的话小程序就会很卡,所以想着只显示20条记录,够20条记录以后,发送一条,就是删除第一条的记录,内容是用cover-view标签写的,现在不知道cover-view标签如何动态删除,请问大佬们有办法么

5 回复

示例代码:小于20条时,往里面加。大于或者等于20条时。先删除第一条,再添加进去。这样就能保持不多于20条。好用记得点赞喔!

cover-view本身的渲染性能就不高,导致setdata整个list,如果频率过快,性能一下子就炸了,抽成自定义组件也炸。楼上提到的只删除前几条,再push数据,只做到了数据量的维护,并没有根本上解决渲染卡顿白屏问题。我们目前优化的方向是维护两个消息队列,跑定时器渲染数据,不过好像不是很理想,尝试用canvas解决,又有点不好处理滚动问题。楼主有解决办法了记得分享一下

用个二十条的数组,每次push一个,shift一个,,然后重新遍历渲染一遍就好了

就设置一个20条数据的对象啊

data:{

    list:[]

}

=============

var list = this.data.list

list = list.length >= 20 ? list.slice(1, 20) : list

list.push({…新的一条…})

this.setData({

    list: list

})

页面list循环输出cover-view就行

只能什么wx-if了

但是如果你是做聊天系统,每提交一次后,可以查询最后20条记录返回,更新数据就可以了。

如果有定时查询,也一样返回20条记录,更新数据

或是查询当前聊天时间以后记录,返回记录   返回几条,就删除前几条。再把返回来记录添加到原来的数据后面就可以了

回到顶部