【微信小程序】success内调用this.data或this.setData出错的解决办法

微信小程序开发中遇到的问题记录_1

使用wx.uploadFile()方法时,遇到一个问题:

wx.uploadFile({
                url: "xxx",
                filePath: file[i].url,
                name: 'file',
                header: {
                    'content-type': 'multipart/form-data',
                    'token': token,
                },
                success (res) {
                    file[i].status = 'done'
                    file[i].serverUrl = JSON.parse(res.data).msg
                    this.setData({
                    	fileList : file
                    }) 
                }

在这段代码中,程序报错如下:
ReferenceError: fileList is not defined
查阅发现:

wx.uploadFile({
	...
	success(res){
		this.data
	}
})

这段代码中的this是指向success闭包的,这种语法是错误的,有两种解决办法:

  1. 使用that = this
var that = this
wx.uploadFile({
	... 
	success(res){
		that.data
	}
})
  1. 使用箭头函数
wx.uploadFile({
	... 
	success : (res) => {
		this.data
	}
})

这是箭头函数的特点之一:没有独立的 this、arguments 和 super 绑定,并且不可被用作方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值