[英]How can I access a value of a variable inside a map function?
在我的React应用程序中,我用来自数组的数据填充表行。
下面,我希望能够在单击年份td
时访问notes变量的值
rows.map((row) => {
return <tr key={row.id}>
<td>{row.start}</td>
<td>{row.end}</td>
<td onClick={(row) => console.log(row.year)}>{row.year}</td>
<td>{row.notes}</td>
<td/></td>
</tr>
})
当我单击屏幕上具有undefined
1999的td
,将输出到控制台。
有人可以帮助我了解如何获取此价值吗?
此代码失败, 为什么?
rows.map((row) => {
return <tr key={row.id}>
<td>{row.start}</td>
<td>{row.end}</td>
<td onClick={(row) => console.log(row.year)}>{row.year}</td>
<td>{row.notes}</td>
<td/></td>
</tr>
})
onClick={(row) => console.log(row.year)}
, onClick={(row) => console.log(row.year)}
您假设当您单击时,在onClick回调中将获得row
作为参数,那么所得到的就是事件。 因此,您的row
参数是一个没有year
的事件,因此您看到undefined
。
解决方案 :
只需删除row
。
onClick={(clickEvent) => console.log(row.year)}
在箭头功能中,您可以访问row
对象。
创建一个像这样的函数:
accessNotes(notes) {
console.log(notes)
}
并在您的HTML中这样做:
rows.map((row) => {
return <tr key={row.id}>
<td>{row.start}</td>
<td>{row.end}</td>
// You don't need to pass row
<td onClick={() => {
console.log(row.year);
// here you call the function
this.accessNotes(row.notes)
}}>{row.year}</td>
<td>{row.notes}</td>
<td/></td>
</tr>
})
您正在访问事件对象的年份,而不是行。 传递给onClick
函数的第一个参数是事件对象,您也将其命名为row(也称为shadowing)。 将其命名为event或e,或者如果您不想访问该事件,则可以将其省略。 做这个。
rows.map((row) => {
return <tr key={row.id}>
<td>{row.start}</td>
<td>{row.end}</td>
<td onClick={(e) => console.log(row.year)}>{row.year}</td>
<td>{row.notes}</td>
<td/></td>
</tr>
})
希望这可以帮助 !
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.