微信小程序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来判断是否使用箭头函数。

posted @ 2023-08-07 19:46  luytest  阅读(94)  评论(0编辑  收藏  举报