背景:用 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