小程序setData()使用和注意事项

注意:

  1. 直接修改this.data,而不调用this.setData(),是无法改变当前页面的状态的,会导致数据不一致
  2. 仅支持可以JSON化的数据
  3. 单次设置的数据不能超过1024KB,尽量避免一次设置过多的数据
  4. 不要把data中的任何一项的value设为undefined,否则这一项将不能被设置,可能会有潜在的问题
代码示例:
Page({

  /**
   * 页面的初始数据
   */
 data: {
    value:"初始值"    //定义一个变量value,赋值为:“初始化”

  },
   /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  }
  })

直接在wx:request()的success回调函数中使用this.setData()会报这样一个错误:

小程序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 

 

小程序setData()使用和注意事项

上一篇:节流函数(防止重复请求)小程序


下一篇:微信公众号多张图片提交给web后台存储ftp