我正在尝试创建超链接,并在单击时将数据传递给javascript函数。每次单击生成的任何超链接时,我都会获得最后一个元素的数据。
for(var transaction in transactionList ){
transactionHistoryMap.push(
<div>
<a style={{'cursor':'pointer'}} onClick={() => {this.transactionDetail(key,transactionList[transaction].transactionId,transactionList[transaction].transactionName)}} className='transactionHistoryLinks'>{transactionList[transaction].transactionName}</a><br/>
</div>
);
}
发布于 2017-09-10 18:52:29
这是由于closure
造成的。解决此问题的最简单方法是在loop
中使用let
或const
。for(const transaction in transactionList) { ... }
。
在MDN的Creating closures in loops: A common common一节中查看此问题的示例
发布于 2017-09-14 17:33:16
我已经解决了使用下面的代码,它可以帮助其他人。
{
transactionHistory[keyName].map(function(value){
transactionHistoryMap.push(
<div>
<a style={{'cursor':'pointer'}} onClick={() => {this.transactionDetail(keyName,value.transactionId,value.transactionName)}} className='transactionHistoryLinks'>{value.transactionName}</a><br/>
</div>
)
},this
)}
https://stackoverflow.com/questions/46142231
复制