微信小程序:解决在回调函数(success()和fail())和定时器(setTimeout()和setInterval())里无法使用this

摘要 通常我们会在使用组件成功时,会在回调函数success()里面修改绑定数据(如this.setData())或继续执行其他函数,这时候会用到this;然而,编译时则报错,说:没定义。

错误实例

如,一个回调函数里修改绑定数据:

success:function(){
	this.setData({
		//修改data{}的数据
		})
}

或者一个回调函数继续执行其他函数:

success:function(){
	this.count() //count()是当前文件已定义的函数
		})

以上都会报错,说setData和count没有定义。

解决办法

要解决以上未定义的错误,只需改成箭头函数(=>)即可,
如改成:

success:()=>{
	this.setData({
		//修改data{}的数据
		})
success:()=>{
	this.count() //count()是当前文件已定义的函数
		})

改成上述这样,就不会报错了。

拓展

定时器的使用也是这样:

setInterval(function(){

},1000)

改成

setInterval(()=>{
 
},1000)

延迟函数setTimeout()也是这样修改即可。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 `onLoad` 函数中使用点击事件时,需要注意以下几点: 1. 确认是否有需要绑定点击事件的组件。 在 `onLoad` 函数中使用点击事件,需要确认页面中是否有需要绑定点击事件的组件。如果没有需要绑定点击事件的组件,点击事件自然无法触发。 2. 确认点击事件的函数名是否正确。 在 `onLoad` 函数中绑定点击事件时,需要将需要绑定的函数名赋值给需要绑定的组件的 `bindtap` 属性。需要确认赋值的函数名是否正确,与实际定义的函数名一致。 3. 确认点击事件的函数是否正确定义。 在 `onLoad` 函数中绑定点击事件时,需要确认绑定的函数是否在页面对象中正确定义。需要检查函数名是否正确,函数中是否存在语法错误或逻辑错误。 4. 确认需要绑定的组件是否支持点击事件。 需要确认需要绑定的组件是否支持绑定 `bindtap` 属性,否则点击事件无法触发。 如果以上几点都没有问题,还是发现点击事件无法触发,则可以尝试使用 `setTimeout` 等方式来实现点击事件的延迟触发。例如: ```javascript Page({ onLoad: function () { setTimeout(() => { this.onTapHandler(); }, 1000); }, onTapHandler: function () { console.log('tap event'); } }) ``` 在 `onLoad` 函数中使用 `setTimeout` 实现点击事件的延迟触发,可以确保页面加载完成后再触发点击事件,从而避免出现点击事件无法触发的情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值