微信小程序13 在请求url获取返回值后修改data变量的一个问题,es6箭头函数或外部定义变量
在之前解密电话时,我们有请求wx的api
wx.request({ url: 'https://api.weixin.qq.com/sns/jscode2session', data: { }, success: (re) => { //console.log('re:' + JSON.stringify(re)); this.setData({ sessionKey: re.data.session_key }) } })
在success成功后,我将session_key保存到了data的变量中。
但是有一个需要注意的点,我在sucess这部分的写法,用的是es6的箭头函数(可参考这篇),因此success中没有自己的作用域,this是指向wx.request外部的作用域,所以此时success中的this就是data部分的this,可以直接调用
this.setData来修改。
同样的,如果写成
sucess:function(re){ xxxxxxx }
那就必须在外部声明一个
var that = this;
用that变量指向外部的this对象,这样在sucess中这么修改data部分
that.setData({ xxxxxx })
所以应该根据自身自否需要用到内部的this,或者是否需要用到外部的this来判断是否使用箭头函数。