首页/ 填坑/ 文章详情

微信小程序setDate赋值优化

微信小程序 setData 赋值 优化 卡顿 发布于 2021-09-14

学习微信小程序,总得与setData打交道。只有setData赋值过后,视图层才会产生变化,不然数据只停留在逻辑层。有基础的同学,阅读微信小程序文档很快,可以做到一天从入门到精通。在不知情的情况下,半只脚已经陷入setData的坑里。

编程时,对setData随时随地能够赋值大为满意,养成随手赋值的习惯。在学习的demo里,这种方法即好教学,又能表现足够的流畅。恰恰是这样,这种方法延续使用到繁杂的页面,页面出现了卡顿现象,悔之晚已。

JS//错误版赋值
this.setData({'name': '小明'})
this.setData({'sex': '男'})
this.setData({'age': '4'})

//正确版赋值
let object = {
    'name': '小明'
    ,'sex': '男'
   ,'age': '4'
}

this.setData(object );

事后了解到setData赋值的参数是个对象,充许同时对多个值赋值。所以将所有的要赋值的数据整合到一个对象里,最后只做一次setData赋值。

在渲染二维数组列表时,往往赋值图个方便,直接对二维组数据直接赋值,导致视频页面数据全部刷新。

JSlet index = 1;
let user = this.data.user;

user[index] = {
    'name': '小明'
    ,'sex': '男'
   ,'age': '4'
}

this.setData({'user': user}); //全局刷新视图页面

let key = 'user['+index+']';
this.setData({[key]: user[index]]}); //局部刷新视图页面

别小看这个小小的改动,小程序页面流畅提升一个档次。特别是无限下拉加载数据,随时数据越来越多,运算也随之增加,可降低页面卡顿成度。

微信小程序文档指出,setData短时间内,不能频繁赋值。这意味着,实时监听某个事件,实时改变某个值变成了不可能。比如:实时监听滚动条。连续赋值会导致值一直没发生变化,直到滚动停下来,赋值的数字像抽了疯,一直在跳动改变。证明setData赋值不是即时行为,往往赋值后,数据进入了缓冲池,最后才一口气爆发出来。

文章评论0 records

最新 最早

0

最新评论Latest comments

凡心的仙人凡心的仙人 03-18 14:35
谢谢你了!
rantrismrantrism 2023-04-03 11:27
您好~我是腾讯云开发者社区运营,关注了您分享的技术文章,觉得内容很棒,我们诚挚邀请您加入腾讯云自媒体分享计划。完整福利和申请地址请见:https://cloud.tencent.com/developer/support-plan 作者申
唐牛才是食神唐牛才是食神 2022-06-15 10:51
(*°▽°*)八(*°▽°*)♪,解决了
唐牛才是食神唐牛才是食神 2022-06-15 10:49
发现不得了的东西,今晚回去好好研究下...
胖螺胖螺 2022-02-04 00:58
( ゜- ゜)つロ 在写了在写了。看到也有些感慨。因为站长前年在我原博客的留言,让我毅然选择去深造,选择读研,曾经我想过挺多东西的,还是自己本专业的适合我自己。在这先表达感谢。新年快乐!