在for中传递onClick的动态参数不起作用
Passing dynamic argument on onClick inside for does not work
下面的react代码不起作用。'select'函数总是使用10而不是赋值来调用。
select( x ) {
alert( x ); // Always alerts 10.
}
render() {
var AllData = [];
for( var i = 0; i<10 ;i++ ) {
AllData.push(
<div key={i} onClick={() => this.select(i)} >{i}</div>
);
}
return (
<div>
{AllData}
</div>
);
}
如何在for循环中正确传递动态值?
由于您正在使用ES2015 箭头函数符号,我建议您将循环变量初始化的let
替换为var
。这样你就有了一个真正的块作用域,否则你就必须处理函数作用域,这就是问题的根源。
for( let i = 0; i<10 ;i++ ) {
AllData.push(
<div key={i} onClick={() => this.select(i)} >{i}</div>
);
}
您必须为i
变量定义一个新的作用域,因此它不会对所有变量使用相同的作用域。实现它的一种方法是使用一个immediate函数:
select( x ) {
alert( x );
}
render() {
var AllData = [];
for( var i = 0; i<10 ;i++ ) {
((i) => {
AllData.push(
<div key={i} onClick={() => this.select(i)} >{i}</div>
);
})(i);
}
return (
<div>
{AllData}
</div>
);
}
相关文章:
- Facebook共享动态参数链接
- 在 angularjs 的 ga 命令中设置动态参数
- JavaScript动态参数
- 在JQGridshowlink格式化程序中添加了动态参数
- 如何使用 javascript 在 HTML 电子邮件中显示动态参数
- 使用动态参数调用函数
- 使用 innerHTML 将动态参数传递给 JavaScript 函数
- Angularjs:隐藏包含动态参数的网址的导航栏
- 解绑,然后将 OnClick 函数(带有动态参数)绑定到 jQuery 或 JavaScript 中继器中的锚标记
- 使用和返回动态参数是否安全
- 创建具有动态参数排列的方法/函数
- 将动态参数应用于 JavaScript 函数,但延迟调用
- ejs :添加动态参数
- 支柱 2 使动态参数
- 具有动态参数长度的函数
- 使用动态参数设置onclick属性
- URL中包含动态参数的快速路由
- 将动态参数传递给IIFE
- Javascript中的动态参数
- Datatables-使用具有多个表和动态参数的Ajax数据源(sAjaxSource)