Javascript for循环中的reactjsonclick处理程序只拾取索引的最终值
在以下代码Javascript for循环中的reactjsonclick处理程序只拾取索引的最终值,javascript,reactjs,jsx,Javascript,Reactjs,Jsx,在以下代码handlePage中,始终报告30,而不是索引i。这不是严格的JS相关行为,而是一般的JS行为。这是什么原因造成的?如何修复 const handlePage = (x) => { console.log(x) } return ( for(var i = 0; i<30; i++) { <div onClick={() => handlePage(i)}>{i}</div> }
handlePage
中,始终报告30,而不是索引i
。这不是严格的JS相关行为,而是一般的JS行为。这是什么原因造成的?如何修复
const handlePage = (x) => {
console.log(x)
}
return (
for(var i = 0; i<30; i++) {
<div onClick={() => handlePage(i)}>{i}</div>
}
)
const handlePage=(x)=>{
console.log(x)
}
返回(
对于(var i=0;i{i}
}
)
因为当您单击循环结束且i=30:)
您可以通过以下小修改来修复该行为:
const handlePage = (x) => {
console.log(x)
}
return (
for(let i = 0; i<30; i++) {
<div onClick={() => handlePage(i)}>{i}</div>
}
)
const handlePage=(x)=>{
console.log(x)
}
返回(
对于(设i=0;i{i}
}
)
使用'let'关键字,它将'i'的范围限定为循环的内容,允许循环中的每个迭代使用一个新值:)
您是否正在尝试将30个
div
元素映射到您的UI?另外,您是否有需要解决的特定问题或问题?你的标题和描述读起来更像是陈述。你是对的,这与React无关,所以你看过例如吗?