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 的数据
-
lunList: [
-
{ id: 0, time: "06-17 20:90", choose: false, user1: "xxx", user2: 'xxx', user1_fen: '1185', user2_fen: "9999", user1_icon: "", user2_icon: "" },
-
{ id: 1, time: "06-17 20:90", choose: false, user1: "xxx", user2: 'xxx', user1_fen: '1185', user2_fen: "9999", user1_icon: "", user2_icon: "" },
-
{ id: 2, time: "06-17 20:90", choose: false, user1: "xxx", user2: 'xxx', user1_fen: '1185', user2_fen: "9999", user1_icon: "", user2_icon: "" }
-
]
方法一:
-
/***
-
* 点击第几轮展示
-
*/
-
showlun: function (e) {
-
var _this = this, index = e.currentTarget.dataset.id;
-
console.log(e, index) //index,表示点击的第几个索引
-
if (_this.data.lunList[index].choose == false) {
-
_this.data.lunList[index].choose=true
-
} else {
-
_this.data.lunList[index].choose=false
-
}
-
_this.setData({
-
lunList:_this.data.lunList
-
})
-
console.log(_this.data.lunList)
-
}
ps:方法一这样的操作,数据一旦过大,再js中操作整个数据渲染页面,速度变慢
方法二:
-
/***
-
* 点击第几轮展示
-
*/
-
showlun: function (e) {
-
var _this = this, index = e.currentTarget.dataset.id;
-
console.log(e, index)
-
//重点 字符串组合的形式, this.setData 自动识别为 ["lunList[2].choose"] 这样直接操作 数据中的某一项直接赋值
-
var ss = 'lunList[' + index + '].choose'
-
if (_this.data.lunList[index].choose == false) {
-
_this.setData({
-
[ss]: true
-
})
-
} else {
-
_this.setData({
-
[ss]: false
-
})
-
}
-
console.log(_this.data.lunList)
-
}
ps:方法二这样的操作,忽略过大数据,局部的进行的修改数据然后渲染页面,速度变快
对于对象或数组字段,可以直接修改一个其下的子字段,这样做通常比修改整个对象或数组更好
阅读(5691) | 评论(0) | 转发(0) |