Chinaunix首页 | 论坛 | 博客
  • 博客访问: 929051
  • 博文数量: 210
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2070
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-19 21:54
文章分类

全部博文(210)

文章存档

2020年(2)

2019年(18)

2018年(27)

2017年(5)

2016年(53)

2015年(88)

2014年(17)

分类: 其他平台

2019-06-18 16:28:33

setData
  setData 是小程序开发中使用最频繁的接口,也是最容易引发性能问题的接口。
  Object 以 key: value 的形式表示,将 this.data 中的 key 对应的值改变成 value。
  具体的介绍请看微信开发文档:https://developers.weixin.qq.com/miniprogram/dev/framework/performance/tips.html
注意:
直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致
单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据。

this.setData 两种情况赋值 触发渲染 页面

xxx.js 中 data 的数据

点击(此处)折叠或打开

  1. lunList: [
  2.       { id: 0, time: "06-17 20:90", choose: false, user1: "xxx", user2: 'xxx', user1_fen: '1185', user2_fen: "9999", user1_icon: "", user2_icon: "" },
  3.       { id: 1, time: "06-17 20:90", choose: false, user1: "xxx", user2: 'xxx', user1_fen: '1185', user2_fen: "9999", user1_icon: "", user2_icon: "" },
  4.       { id: 2, time: "06-17 20:90", choose: false, user1: "xxx", user2: 'xxx', user1_fen: '1185', user2_fen: "9999", user1_icon: "", user2_icon: "" }
  5.     ]
方法一:

点击(此处)折叠或打开

  1. /***
  2.   * 点击第几轮展示
  3.   */
  4.   showlun: function (e) {
  5.     var _this = this, index = e.currentTarget.dataset.id;
  6.     console.log(e, index) //index,表示点击的第几个索引
  7.     if (_this.data.lunList[index].choose == false) {
  8.          _this.data.lunList[index].choose=true
  9.     } else {
  10.      _this.data.lunList[index].choose=false
  11.     }
  12.     _this.setData({
  13.         lunList:_this.data.lunList
  14.     })
  15.   console.log(_this.data.lunList)
  16.   }
ps:方法一这样的操作,数据一旦过大,再js中操作整个数据渲染页面,速度变慢

方法二:

点击(此处)折叠或打开

  1. /***
  2.   * 点击第几轮展示
  3.   */
  4.   showlun: function (e) {
  5.     var _this = this, index = e.currentTarget.dataset.id;
  6.     console.log(e, index)
  7.    //重点 字符串组合的形式, this.setData 自动识别为 ["lunList[2].choose"] 这样直接操作 数据中的某一项直接赋值
  8.     var ss = 'lunList[' + index + '].choose'  
  9.     if (_this.data.lunList[index].choose == false) {
  10.       _this.setData({
  11.         [ss]: true
  12.       })
  13.     } else {
  14.       _this.setData({
  15.         [ss]: false
  16.       })
  17.     }
  18.   console.log(_this.data.lunList)
  19.   }
ps:方法二这样的操作,忽略过大数据,局部的进行的修改数据然后渲染页面,速度变快
对于对象或数组字段,可以直接修改一个其下的子字段,这样做通常比修改整个对象或数组更好









阅读(5568) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~