前言:微信小程序中经常需要用到this.setData({})把变量值渲染到视图层,那到底什么是this.setData,如何使用?需要注意哪些?作为一个初学者,分享一点我的经验,希望大家批评指正。

  介绍:setData函数主要用于将逻辑层数据发送到视图层,同时对应的改变this.data.x的值。

  参数:Object 以 key : value 的形式表示,将 this.data 中的 key 对应的值改变成 value。

使用:先给出代码,wxss没有什么意义就不贴了

index.wxml

 <view class="numview">test01======={{test01}}</view><view class="numview">test02======={{test02}}</view><button bindtap="testfun">测试</button>

index.js

Page({data: {test01: 1,test02: 2},testfun: function() {var that = this;if (this.data.test01 == 1) {that.setData({test02:8})console.log(this.data.test02)}},onLoad: function() {},
})

  此时经过编译后模拟器的显示:

  这里都容易理解,当点击了button按钮后,触发点击事件执行testfun函数,将test02设置为8,如图:

  通过this.data.test02=8这种方式直接赋值可以吗,答案是不可以,看下面:

使用this.data.test02=10的结果不会渲染到前台页面中显示,但是后台已经改变,会造成前后台数据不一致。

我又想到是不是可以先通过this.data.test02=10赋值,再通过this.setData渲染呢?

 onLoad: function() {this.data.test02 = 10;this.setData({test02})}

编译后显示:

发现了什么?我个人觉得是这样的:

一、this.setData中设置的key如果只有key没有value,则从所在函数内找这个变量,找到之后渲染到前台指定位置。

 (1)如果Page对象的data中没有定义该key,则setData自动创建,这个可以从打印结果中发现(this.data.test03,data中没有定义)。

 (2)如果Page对象的data中已经定义该变量,则修改data中原变量的值。

二、this.setData中设置的key如果有key有value,直接渲染到前台并修改原data中的数据。

注意事项:

上面演示的使用说明也算是注意事项吧,理解透彻才能运用自如,避免数据混乱。

另外给出官方的setData建议:https://developers.weixin.qq.com/miniprogram/dev/framework/performance/tips.html

常见的 setData 操作错误

1. 频繁的去 setData

在我们分析过的一些案例里,部分小程序会非常频繁(毫秒级)的去setData,其导致了两个后果:

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

渲染有出现延时,由于 WebView 的 JS 线程一直处于忙碌状态,逻辑层到页面层的通信耗时上升,视图层收到的数据消息时距离发出时间已经过去了几百毫秒,渲染的结果并不实时;

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

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

3. 后台态页面进行 setData

当页面进入后台态(用户不可见),不应该继续去进行setData,后台态页面的渲染用户是无法感受的,另外后台态页面去setData也会抢占前台页面的执行。

总结

以上所述是小编给大家介绍的小程序中this.setData的使用和注意事项,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

小程序中this.setData的使用和注意事项相关推荐

  1. 小程序中的setData的使用

    小程序中的setData setData 函数用于将数据从逻辑层发送到视图层(异步),同时改变对应的 this.data 的值(同步). 直接修改 this.data 而不调用 this.setDat ...

  2. 微信小程序中this.setData is not a function报错问题

    微信小程序中this.setData is not a function报错问题 新手在编写小程序时经常会遇到的一种错误. 新手在编写小程序时经常会遇到的一种错误. 在小程序中,通常我们用setDat ...

  3. 小程序中this.setData是什么啊

    在小程序中,this.setData 是一个用于修改页面数据的函数.它的作用是将传入的对象的属性和值应用到小程序页面的数据对象上,并触发页面的重新渲染. 使用方法如下: this.setData({ ...

  4. 小程序中Cannot read property ‘setData‘ of undefined问题的解决

    小程序中Cannot read property 'setData' of undefined问题的解决 参考文章: (1)小程序中Cannot read property 'setData' of ...

  5. 微信小程序中this指向作用域问题this.setData is not a function报错

    在微信小程序中我们一般通过以下方式来修改data中的数据 this.setData({index1: e.detail.value}) 比如在函数里面修改数据 bindFaChange1: funct ...

  6. 微信小程序中如何使用setData修改数组或对象中的某一参数

    本人也是刚开始接触微信小程序,在微信小程序中经常会遇到修改数组中某一项的值,比如array[0]或者是对象中object.item的值.这些值在微信小程序中都需要使用一个名为setData的方法,而这 ...

  7. 微信小程序中 setData 详解

    虽互不曾谋面,但希望能和您成为笔尖下的朋友 以读书,技术,生活为主,偶尔撒点鸡汤 不作,不敷衍,意在真诚吐露,用心分享 点击左上方,可关注本刊 标星公众号(ID:itclanCoder) 如果不知道如 ...

  8. js中怎么获取某个属性的值_小程序中 setData 详解

    前言 在小程序中各个页面之间是相互独立的,一个页面分为渲染层(视图层 webview),逻辑层(JavaScript),系统层(底层),在架构上,WebView和 JavascriptCore 都是独 ...

  9. 小程序中textarea层级最高的结局办法

    在小程序中textarea层级比较高,当底部有fiexd定位的时候或出现文本框中的文本穿透显示出来,解决办法是在texarea标签下面添加一个view或者text标签来和texarea标签替换使用 & ...

最新文章

  1. Response.Redirect 打开新窗体的两种方法
  2. 运维中的MySQL数据库管理方式
  3. @Quelifier的用法,
  4. 三步快删EXCEL工作表下面出现1000多万行无用数据或者空白行(空值行)
  5. MatLab 自编的 均值滤波、中值滤波、高斯滤波 图像处理函数
  6. 网狐动态数组CWHArray
  7. GIS实战应用案例100篇(八)-桩号相同,坐标不同,RTK怎么输入曲线要素?
  8. Sublime Text 2 快捷键用法大全
  9. openstack常用运维命令_运维人员常用的Linux命令汇总
  10. spring jdbcTemplate中获取jdbc Connection并执行操作
  11. C语言常见例题源代码
  12. html怎么设置文字无法复制粘贴,网页文字无法复制粘贴怎么办
  13. 如何用python制作二维码照片_利用Python制作二维码
  14. YOLOX-PAI: An Improved YOLOX, Stronger and Faster than YOLOv6
  15. LeetCode——反转链表
  16. 8s数据导入导出的load和unload解析
  17. 关于matlab中矩阵取值的方法
  18. wordpress主题html5,Salutation 强大的HTML5商务WordPress主题集成BuddyPress[更新至v3.0.7]
  19. 【hadoop】Archive命令使用
  20. mongo启动报错,解决办法

热门文章

  1. css总结-笔记--部分非原创--属于资源整合
  2. 教你如何在低成本、有限的时间里策划裂变100社群_怎么做微信防封群
  3. 编写指数函数 c语言,C语言:利用函数指针编写一个用矩形法求定积分的通用函数,包括正弦,余弦和指数函数,...
  4. 五大利器 5款多媒体格式转换软件介绍
  5. PHP下最好用的富文本HTML过滤器:HTMLPurifier使用教程
  6. 电工 电路物理量
  7. leetcode-Algorithms-LC-2 |分式化简
  8. cf#732div2 c题解
  9. 在服务器上创建虚拟机
  10. ZMQ/ZeroMQ简介