在for循环中reactJs点击事件

IT技术 javascript reactjs
2021-05-08 21:24:06

我正在与 React 合作。这是我的代码:

var rows = [];
for(var i = 1; i <= this.state.numberOfPages; i++) {
    rows.push(<li key={i.toString()} onClick={() => this.getResults(i)}><a href="#">{i}</a></li>)
};

getResults() 功能很简单:

getResults: function(page = this.state.currentPage) {
    console.log(page);
},

this.state.numberOfPages等于 3。问题是,当我单击<li>标签时,控制台中总是显示 4。但是,<li>值在 HTML 中正确显示。我不明白为什么i在通过参数传递时总是评估最后一个值。

一个细节:

在 React Console 中,key 属性也是正确的。问题是with the parameter only

提前致谢,并对我的英语感到抱歉。

1个回答

正如重复的答案中提到的,您需要使用一些内部函数来关闭变量。使用map是实现此目的的简单方法:

var rows = new Array(this.state.numberOfPages).fill(0).map( ( zero, index ) =>
    <li key={index} onClick={() => this.getResults(index)}>
        <a href="#">{index}</a>
    </li>
)