uni-app编写微信小程序将v-for循环出来的参数传入@change等事件时,报错Property or method “*“ is not defined on the instance

需求:通过v-for循环列表,在列表中包含switch组件,想将switch组件的@change事件绑定为item.onChange 在APP和H5中一直报错
Property or method “child” is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property
大致意思是child没有定义但是在渲染的时候使用到了。确认在data中定义了或者在类组件中初始化了。但是child是遍历出来的数据呀。
在这里插入图片描述

大致的代码如下:
在这里插入图片描述
实际上:value="child.status"并不会报错找不到child,只有在change事件中才会报错。

解决

1.首先不要直接把child.onChange传递给@change,而是通过
@change="change(child.onChange)"这种方式把child.onChange放在方法里面
在这里插入图片描述
然后在change方法中打印一下item,看是否是undefined,如果是自己传入的方法,直接执行即可。

change(item) {
	console.log(item)
	if(item){
		item()
	}
}

2.如果第一步打印的item为undefined,则检查是否在v-for的组件中定义了key值,将key值设置为index即可。
在这里插入图片描述

感叹一句:想要一套代码各端兼容真的太难了

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值