javascript - 为什么我不能在 .map() 函数的返回体中传递函数
问题描述
我正在尝试学习如何在反应中进行编码,并且正在学习教程。我遇到了一个问题(我以另一种方式解决了),但想知道它是如何工作的。
我的 render(){} 方法之前有以下功能:
onDeleteHandler = () => {
axios.delete('my_firebase_link'+this.props.obj.id+'.json')
.then(console.log('Deleted'))
.catch(err => console.log(err))
}
在我的渲染方法中,我尝试动态创建一个表格行
render() {
let tabRow = <p>Hello</p>;
if(this.state.businesses){
tabRow = this.state.businesses.map(function(object, i){
return <TableRow obj={object} key={i} onDelete={this.onDeleteHandler}/>;
});
} return();
但是,当我尝试运行该代码时,出现以下错误:TypeError: Cannot read property 'onDeleteHandler' of undefined
在搜索了一些教程之后,我最终得到了以下完美运行的代码
render() {
let tabRow = <p>Hello</p>;
if(this.state.businesses){
tabRow = this.state.businesses.map(element =>(
<TableRow obj={element} key={element.id} onDelete={(id) => this.onDeleteHandler(element.id)}/>
))
} return();
我想知道为什么最后一个解决方案有效,为什么当我在地图中使用“function()”方法时会引发错误。
抱歉,如果我的解释可能令人困惑,但如果我的解释缺少代码,我会给出任何代码。
太感谢了!
解决方案
推荐阅读
- python - 无法使 webdriver.click() 或 .submit() 循环工作(python)
- android - React Native App 打开后一直关闭而不会崩溃
- php - PHP电子表格下拉项目限制
- angular - 如何触发人员点击记住我或不记住我
- java - 无法获取单选按钮 ID
- mongodb - 电子商务的 Doctrine ODM 模式
- docker - 如何在 Azure 发布管道任务中动态地向 docker-compose.yml 提供 docker 图像标记?
- linux - kubectl exec 行为奇怪,即使 pod 中存在二进制文件,也说明找不到命令
- python - 计算滚动均方根
- html - 如何在同一位置设置不同的div?