reactjs - 无法将所需的参数传递给反应渲染()的jsx内的函数
问题描述
基本上,我想将与 span 元素关联的值传递给函数 UpdateSelectedNumbers()。但是,如果我使用 for 循环创建一个跨度元素数组,则始终使用值 9 调用 onClick 事件处理程序(UpdateSelectedNumbers)。当我使用 map 函数时,情况并非如此。有人可以解释为什么会发生这种情况
const stars = [1,2,3,4,5,6,7,8,9];
var temp = [];
for(var i=0;i<9;i++){
temp.push(<span className={getClass(i+1)} onClick={()=>props.UpdateSelectedNumbers(i+1)}>{i+1} </span>)
}
return (
<div>
{stars.map(x => <span className={getClass(x)} onClick={()=> props.UpdateSelectedNumbers(x)}>{x}</span>)}
{temp}
</div>
)
解决方案
因为var
它的作用域是最近的函数,所以你的所有()=>props.UpdateSelectedNumbers(i+1)
函数都会得到 的最终值i
,即8
.
您可以改为使用let
which 范围为最近的封闭块,因此循环的每次迭代都有自己的值。
推荐阅读
- python - 使用输出的一部分作为输入
- python - 我想访问 int64 数组列表中的元素
- ios - Ionic 5 带电容器“plugin_not_installed”
- ios - 比最大压缩进一步压缩 UIImage
- android - Android Studio 生成的 apk 安装但未打开
- dart - 为什么我不能在 Dart 中使用作为函数参数接收的原始值来初始化“const”变量?
- r - 如何使用 ggplot 绘制分类 0-1 变量的频率
- python - QML 图形效果不适用于 PyInstaller
- html - 将html列表从底部移动到顶部
- android - 将应用程序从后台带到前台,Xamarin Android