Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript for循环中的reactjsonclick处理程序只拾取索引的最终值_Javascript_Reactjs_Jsx - Fatal编程技术网

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无关,所以你看过例如吗?