
正文
小程序setData()使用和注意事项
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
注意:
- 直接修改this.data,而不调用this.setData(),是无法改变当前页面的状态的,会导致数据不一致
- 仅支持可以JSON化的数据
- 单次设置的数据不能超过1024KB,尽量避免一次设置过多的数据
- 不要把data中的任何一项的value设为undefined,否则这一项将不能被设置,可能会有潜在的问题
代码示例:
Page({ /**
* 页面的初始数据
*/
data: {
value:"初始值" //定义一个变量value,赋值为:“初始化” },
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) { }
})
直接在wx:request()的success回调函数中使用this.setData()会报这样一个错误:

因为这里的this是相对于wx:request()的当前对象
解决:因为这里的wx:rewuest()是在页面加载时调用,所以我们可以在onLoad()中定义一个变量that ,将this赋值给that,那么此时的that代表相对于onLoad()的当前对象,然后在success回调函数中直接使用that.setData()即可。
这是设置Page data的示例:
Page({ /**
* 页面的初始数据
*/
data: {
score_list: null,
guanka_list: null,
currentTab: 0
}, /**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
var that = this //定义一个全局变量that
wx.request({
url: app.globalData.baseUrl + "query/rankByScore",
type: 'GET',
dataType: 'json',
success: function (res) {
that.setData({
score_list: res.data.data
})
console.log(1, res)
}
})
}
})
参考链接:https://juejin.im/post/5cf244405188252d18205def






