宝哥软件园

本. setData在小程序中的使用及注意事项

编辑:宝哥软件园 来源:互联网 时间:2021-08-20

This.setData({})常用在微信小程序中,向视图层呈现变量值。这是什么?setdata以及如何使用它?需要注意什么?作为初学者,我想分享一些我的经验,希望你能批评指正。

简介:setData函数主要用于将数据从逻辑层发送到视图层,并相应改变this.data.x的值。

参数:对象以key :值的形式表示,此. data中key对应的值改为value。

用法:先给出代码,wxss没有任何意义,所以不要发布

index.wxml

view class=' numview ' test 01======{ { test 01 } }/view view class=' numview ' test 02========{ { test 02 } }/view button bind tap=' test fun ' test/button index . js。

Page({ data: { test01: 1,test02: 2 },test fun : fun(){ var=this;如果(这个。data . test 01==1){那个。setdata ({test02:8})控制台。日志(这个。data.test02)}},onload3360function () {},})此时,被编译后,模拟器的显示:

这里很容易理解,当点击按钮按钮时,触发click事件执行testfun函数,test02设置为8,如图:

直接用这个赋值可以吗. data.test02=8?答案是否定的,见下图:

使用this.data.test02=10的结果不会呈现到前景页面,但是背景已经改变,这将导致前景和背景之间的数据不一致。

不知道有没有可能先通过这个. data.test02=10赋值,再通过这个. setData渲染?

onLoad:函数(){ this . data . test 02=10;this.setData({ test02 }) }

编译错误:未定义test02

为什么呢?再做一个测试:

onLoad:函数(){ this . data . test 02=10;var test03=20这个。setdata ({test03})控制台。日志(这个。data.test03)}被编译并显示:

你发现了什么?我个人认为是这样的:

1.如果只有键没有值,从它的函数中找到这个变量,找到后把它渲染到前台的指定位置。

(1)如果在Page对象的数据中没有定义键,则自动创建setData,可以在打印结果中找到(this.data.test03,数据中没有定义)。

(2)如果已经在Page对象的数据中定义了变量,则修改数据中原始变量的值。

第二,如果this.setData中的键集有一个键和值,它将被直接渲染到前台,原始数据中的数据将被修改。

注意事项:

以上演示的说明可视为注意事项。只有当你彻底理解它们时,你才能自由使用它们,避免数据混乱。

另外,给出了setData的官方建议:https://developers . weixin . QQ.com/mini program/dev/framework/performance/tips . html。

常见的数据集操作错误

1.经常去设置数据

在我们已经分析过的一些情况下,一些小程序会非常频繁地删除setData(毫秒级),这导致两个后果:

在Android下,用户滑动时会有卡顿感,操作反馈延迟严重,因为JS线程一直在编译执行渲染,未能及时将用户操作事件传递给逻辑层,逻辑层无法及时将操作处理结果传递给视图层;

渲染有延迟。因为WebView的JS线程一直忙,逻辑层和页面层的通信时间增加了。视图层收到的数据消息从发送时间已经过去了几百毫秒,呈现结果不是实时的;

2.每次setData传递大量新数据时

根据setData的底层实现,我们的数据传输实际上是一个evaluateJavascript脚本的过程。当数据量过大时,会增加脚本的编译和执行时间,占用WebView JS线程。

3.设置数据在后台页面上执行

当页面进入后台状态(用户不可见)时,不应该继续执行setData。背景状态页面的呈现用户感觉不到。此外,在后台状态页面上设置数据也会抢占前台页面的执行。

摘要

以上就是这个. setData在边肖介绍的小程序中的使用和注意事项。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!如果你觉得这篇文章对你有帮助,请转载,请注明出处,谢谢!

更多资讯
游戏推荐
更多+