如何在点击时检索标签的内部内容
我在创建元素时尝试过类似的操作,但是i
的值始终等于onClick
中的最后一个值。
heads = ['alligator', 'snake', 'lizard'];
for (var i = 0; i < size;i++){
tHead.push(<th onClick={() => this.handleRowClick(heads[i])}> {heads[i]} </th>);
}
答案 0 :(得分:0)
尝试:
heads.forEach((head)=>{
tHead.push(<th onClick={() => this.handleRowClick(head)> {head} </th>});
}
在for循环上使用forEach的优点是索引和值绑定到特定的循环迭代,而不是周围的范围。因此,当循环索引更改时,闭包将保留旧的循环索引。
这也将起作用:
heads.forEach((_, index)=>{
tHead.push(<th onClick={() => this.handleRowClick(heads[index])> {heads[index]} </th>});
}
或者这个:
for (var i = 0; i < size;i++){
let j = i;
tHead.push(<th onClick={() => this.handleRowClick(heads[j])}> {heads[j]} </th>);
}
最后一个有效,因为j
绑定到特定的循环迭代,所以在i
不变的情况下它不会改变。