2016-12-27 66 views
0

我正在使用React。這是我的代碼:React Js單擊for循環內的事件

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值。

一個細節:

在陣營控制檯,關鍵屬性是正確的了。問題是with the parameter only

非常感謝我的英語。

+0

您是否意識到您的循環可能已經執行? – AbstractDissonance

+0

@AndyRay我試過了,不幸的是它沒有工作 – Genarito

回答

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> 
) 
+0

工作!非常感謝! – Genarito

+0

我找到了更短的路!你可以這樣做:onClick = {this.getResults.bind(this,i),它可以工作 – Genarito