2017-07-26 70 views
0

我創建了一個按鈕標籤數組,現在我希望能夠在點擊時處理每個按鈕,但我不知道如何處理this.handleClickSelection()以便知道哪個標籤已被點擊。ReactJS如何知道點擊哪個標籤?

class Search extends React.Component 
{ 
constructor() 
{ 
    super(); 
    this.state = { entries : [], entries_audio : [], } 
} 

componentWillMount() 
{ 

    $.get('https://something', (data) => { 


     var entriesArray = []; 
     var entriesAudioArray = []; 
     for (var i = 0; i < data.stories.length ; i++) { 
      entriesArray.push(<button className ="entries" key={i} onClick={()=> this.handleClickSelection() } > {data.stories[i].title }</button>); 
      entriesAudioArray.push(data.stories[i]); 
     }; 
     this.setState({ indents : entriesArray, entries_audio : entriesAudioArray }); 
     console.log(this.state.entries_audio); 



    }, 'json'); 


} 


handleClickSelection() 
{ 
    alert("this particular button data"); 


} 


//more code below 

回答

2

您可以點擊處理程序綁定到指數:

... onClick={this.handleClickSelection.bind(this, i)} 

然後handleClickSelection將收到該索引作爲第一個參數:

handleClickSelection(index, event) { 
    console.log('item pressed: ', index); 
} 
+0

謝謝。這是工作。你知道爲什麼onClick = {this.handleClickSelection.bind(this,i)}。工作,但onClick = {()=> this.handleClickSelection.bind(這,我)}沒有? – user2419831

+1

這是因爲在第二種形式中,你並沒有調用你的點擊處理函數,「bind」只是返回一個新的綁定函數。如果你想這樣寫,你應該調用你的處理函數:'onClick = {()=> this.handleClickSelection(i)}' – thedude

1

我們爲此使用bind。像:

onClick={this.handleClickSelection.bind(this, i)} 

這將通過i作爲第一個參數到你的方法:

handleClickSelection(i) 
+1

謝謝。這是工作。你知道爲什麼 onClick = {this.handleClickSelection.bind(this,i)}。作品但 onClick = {()=> this.handleClickSelection.bind(this,i)} does not? – user2419831

相關問題