微信小程序 自定义组件中 triggerEvent() 函数失效的一种情况 (Cannot read property ‘triggerEvent‘ of undefined)

在网络上并没有搜索到这种情况,这里记录下避免以后的自己和广大码农踩到这个坑

问题描述:在自定义组件中想调用 this.triggerEvent()函数给父组件传参,过程中报错:Cannot read property ‘triggerEvent’ of undefined

原因之一:组件的方法的格式错误(函数编写格式错误)见代码
解决方法:修改为正确格式 见代码

//header.js  组件中的js代码片段  错误示例

Component({
 /**
   * 组件的方法列表
   */
	methods: {
   	//下面是一个触发事件后绑定的函数,想要通过triggerEvent将数据传到父组件
    onChangeLocation:(event) => {	//这里格式错误,使用箭头函数后编译器不能识别triggerEvent()函数
    	let message = "我是要传到父组件的消息";
    	console.log(message");	//可以正常打印,说明使用箭头函数可以执行里面的代码
        this.triggerEvent("locationChange",{message});	//出错,箭头函数会导致this指针指向的位置不对,导致无法调用 triggerEvent 方法
        }
      })
    },
  }
})


//正确示例1  官方文档的格式

Component({
 /**
   * 组件的方法列表
   */
	methods: {
    onChangeLocation(event) {	
    	let message = "我是要传到父组件的消息";
    	console.log(message");	//正常打印
        this.triggerEvent("locationChange",{message});  //执行成功	
        }
      })
    },
  }
})


//正确示例2  可以正确执行但格式与官方文档格式不同

Component({
 /**
   * 组件的方法列表
   */
	methods: {
    onChangeLocation:function(event) {	
    	let message = "我是要传到父组件的消息";
    	console.log(message");	//正常打印
        this.triggerEvent("locationChange",{message});  //执行成功	
        }
      })
    },
  }
})
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值