1.出现的问题
小程序中,会遇到,使用this的时候会报错,比如下面这段代码,把isBinding从本地缓存中取出来,通过isBinding的值判断是新用户还是老用户
openPages: function(){
wx.getStorage({
key: 'isBinding',
success (res) {
console.log("dkdkdkkdk,",res.data)
if(res.data === false){//true是老用户,则跳过,直接进去
console.log("我是老用户================")
this.setData({openApage: true});
}else{
wx.navigateTo({
url: '/pages/user/newUser/newUser',
})
}
}
})
},
结果报错了,报错如下:
2.问题的原因
无法找到setData这个定义,使用this.setData获取不到,this代表当前对象,会随着程序执行时候的上下文改变,方法的getStorage方法的回调函数中,对象已经变了,
3.解决方法
目前能想到的解决办法就是复制一份当前对象,用that代替当时的this
openPages: function(){
let that = this;
wx.getStorage({
key: 'isBinding',
success (res) {
console.log("dkdkdkkdk,",res.data)
if(res.data === false){//true是老用户,则跳过,直接进去
console.log("我是老用户================")
that.setData({openApage: true});
}else{
wx.navigateTo({
url: '/pages/user/newUser/newUser',
})
}
}
})
},
这样做至少能解决当前的问题。
今天就到这了,主要是把遇到问题解决掉,然后稍微总结记录一下。