javascript - React onClick 导致编译错误
问题描述
我有一段代码如下:
for (let i = 0; i <= total; i++)
leftButtons.push(<Button onClick={() => console.log(i)} key={`leftBtn_${i}`} color="primary">{i + 1}</Button>);
这将导致编译错误,并且错误消息为“模块解析失败:意外令牌 (36:23) 您可能需要适当的加载程序来处理此文件类型。”
如果我删除 console.log(i) 或将其更改为在 onClick 中不使用 i,它将通过编译。我真的很困惑为什么我不能在 onClick 中使用 i 。
解决方案
代替:
onClick={() => console.log(i)}
尝试做:
onClick={() => console.log(i).bind(this)}
恕我直言,发生这种情况是因为您使用的是箭头函数语法,并且因为let
被限制在 for 循环中,并且没有bind
该控制台,它将表现为它属于您的 let 变量i
不存在的全局/外部范围。
推荐阅读
- excel - 如何更改当前保存“ThisWorkbook.Path”的文件的路径?
- sql - 将存储过程从 SQL Server 引入 Power BI:将数据类型 nvarchar 转换为 bigint 时出错
- html - 使用 Flex Box 使一些盒子垂直和水平
- javascript - 根据在另一个下拉列表中选择的值填充下拉列表
- apache - Apache RewriteMap 无法找到外部文件中存在的 url
- java - org.springframework.web.bind.annotation.ResponseStatus 和 org.springframework.http.HttpStatus 不存在
- python - 从 Pandas 系列中提取“url”值
- mysql - 这个查询有什么问题?我正在尝试创建一个带有一些主 ID 的练习小表来进行匹配,但我在这里找不到错误
- machine-learning - 深度学习中的训练/推理术语与一般 ML 中的训练/测试有什么不同吗?
- php - 如何创建一个 SQL 查询,在其中我可以使用 WHERE & AND 子句选择一列的最大数量