Cannot read property 'setData' of null

背景:用 wx.request 請求到數據后,想 this.setData 來改變某個按鈕的內容。發現 this.setData 會報錯「Cannot read property 'setData' of null」

示例一:為錯誤示例 ,會出現 this.setData is not a function 的報錯,原因是此時的this對象指的是setTimeout 里面的匿名函數對象 , 但是在這種情況下還是想動態渲染視圖,就需要把當前的this的狀態保存起來,然后在 setTimeout 里面的匿名函數對象內調用。如示例二

片段1
  onLoad:function(){
    setTimeout(function () {
      this.setData({
        open: 111
      },1000)
    })
  },

示例二:保存當前對象的this狀態,在 setTimeout 里面的匿名函數對象內調用 , 此時能夠做到動態選擇視圖同時數據和視圖都不會出錯

片段2
  onLoad:function(){
    var that= this;
    setTimeout(function () {
      that.setData({
        open: 111
      },1000)
    })
  },

參考
https://blog.csdn.net/qq_35713752/article/details/78879984

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容