javascript - 在地图功能中反应 onClick 功能
问题描述
我尝试在地图函数中触发 onClick 事件,但出现此错误:
TypeError:无法读取未定义的属性“handleClick”
我们如何在地图函数中触发 onClick 事件?
这是我的代码:
constructor(props) {
super(props);
this.state = {
isToggleOn: true
};
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
this.setState(prevState => ({
isToggleOn: !prevState.isToggleOn
}));
}
render() {
if (this.props.data) {
var recipes = this.props.data.map(function(recipe, i) {
return <div key={i} className="col-8 offset-col-1 f-l relative m-t-10">
<div className="col-6 f-l">
<p className="col-8 f-l">{recipe.title}</p>
<button className="f-l" onClick={this.handleClick}>Voir la recette</button>
</div>
</div>;
})
;
}
return (
<div className="RecipeList">
<div className="col-12">
{recipes}
<div className="both"></div>
</div>
</div>
);
}
}
解决方案
使用箭头函数作为给定的函数,这map
将this
是您所期望的:
if (this.props.data) {
var recipes = this.props.data.map((recipe, i) => {
return <div key={i} className="col-8 offset-col-1 f-l relative m-t-10">
<div className="col-6 f-l">
<p className="col-8 f-l">{recipe.title}</p>
<button className="f-l" onClick={this.handleClick}>Voir la recette</button>
</div>
</div>;
});
}
为什么会这样,这里会详细解释。箭头函数不提供自己的this
绑定,而是保留this
封闭词法上下文的值。
推荐阅读
- python - 你如何使用 BeautifulSoup Python 浏览“显示更多”按钮?
- node.js - 在 1)服务器重新启动和 2)对文件进行更改时自动重新启动节点应用程序的最佳方法是什么?
- labview - 从多个传感器读取数据,无需为每个设备重复代码
- javascript - 为什么我收到警告“遇到两个孩子使用相同的密钥,‘1’。” 即使数组中只有一个元素
- javascript - 在保留关联事件的同时将 javascript 元素转换为 html
- amazon-web-services - 有没有办法在 AWS S3 上托管静态网站而不提供公共访问权限?
- microservices - 如果 SAGA 事务中的回滚失败怎么办
- css - 你如何只为移动设备上的 safari 更改 css
- google-cloud-platform - Datastudio 无法连接到您的数据集、权限或错误?
- r - 我如何在 R 中滞后 ts 对象?