reactjs - 在 div 上保存信息并在 Click 事件上检索该信息
问题描述
假设我有一个由 5 个整数组成的数组,
[1,2,3,4,5]
我迭代数组并创建 5 个 div。在每个 div 上,我想要一个 onClick 处理程序。因此,当我单击一个 div 时,我想检索该数字。
存储信息的最佳方式是什么,以便稍后我可以从处理程序函数中检索它?
我尝试了以下方法并且它正在工作,但我不确定这是否是最好的解决方案,因为在我的应用程序中我将拥有大量这些 div。
const array = [1,2,3,4,5];
// make a closure
function onDivClick(id) {
return () => {
console.log(id);
}
}
return (
<div>
{array.map( id => {
return <div onClick={onDivClick(id)}> ... </div>
})
</div>
)
我还看到了 html 数据属性:
所以我可以存储,然后我可以用event.target.getAttributes('data-id')
.
还有其他方法吗,哪种方法最好?
解决方案
你现在拥有的东西是不行的。{onDivClick(id)}
在每次渲染时执行。
相反,id
直接将属性添加到 div,并在点击处理程序中访问它。
像这样重写你的点击处理程序:
function handleClick(event) {
let id = event.target.id;
console.log(id);
}
并将其附加到 div 上,如下所示:
<div id={id} onClick={handleClick} />
推荐阅读
- apache-spark - pyspark 当条件为真时,插入一些带有列变量的单词
- scikit-learn - How to use GroupKFold with CalibratedClassifierCV?
- azure-functions - 如何将另一个项目引用的 Azure Function 3.1 文件包含在其中
- r - R xml2 tidyverse:如何在 xml 文档中映射不同级别的值?
- r - 你如何在 R 中创建一个虚拟数据集?
- sql - 如何在自连接中使用 Exists
- javascript - 每行和每列只选择一个表格单元格
- node.js - NodeJS Restify 路由分组
- php - 将日期时间提高到人类可读的水平
- python - 使用连接附加两个数据帧