当我在地图方法中调用onChange函数时遇到以下错误
Uncaught TypeError: Cannot read property 'onCheckChange' of undefined at onChange
我的代码正在跟踪
getPlanCheckbox(jsonParseservicelist, bbuserid) {
const returnresult = jsonParseservicelist.map(function (single) {
return (
<div className="">
<label className="" >
<input type="checkbox" onChange={() => this.onCheckChange(bbuserid, single.plantype)} defaultChecked={single.isActive == 1 ? "checked" : ""} />
<span className="" />
</label>
</div>);
});
return returnresult;
}
onCheckChange = (e, bbuid, plantype) => {
console.log(bbuid, plantype);
}
答案 0 :(得分:1)
我尝试了一下,发现了2个解决方案
第一个只是将您的函数替换为以下
getPlanCheckbox(jsonParseservicelist, bbuserid) {
var self = this;
const returnresult = jsonParseservicelist.map(function (single) {
return (
<div className="">
<label className="" >
<input type="checkbox" onChange={() => self.onCheckChange(bbuserid, single.plantype)} defaultChecked={single.isActive == 1 ? "checked" : ""} />
<span className="" />
</label>
</div>);
});
return returnresult;
}
只需将this
放在另一个variable
内,然后用户将变量名调用函数
可以说
var self = this;
现在我使用self来调用这样的函数
self.onCheckChange();
第二个是将地图用作箭头功能
data.map((single) => {
})
答案 1 :(得分:1)
将地图函数定义为箭头,因为否则,this
将不是全局上下文。如果尚未在构造函数中绑定getPlanCheckbox
,则对this
函数同样适用:
getPlanCheckbox = (jsonParseservicelist, bbuserid) => {
const returnresult = jsonParseservicelist.map((single) => {
return (
<div className="">
<label className="" >
<input type="checkbox" onChange={() => this.onCheckChange(bbuserid, single.plantype)} defaultChecked={single.isActive == 1 ? "checked" : ""} />
<span className="" />
</label>
</div>);
});
return returnresult;
}