2017-07-26 7 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(this、i)} doesnt? – user2419831

+1

2番目のフォームでクリックハンドラを呼び出さないため、 'bind'は新しいバインドされた関数を返すだけです。そのように書く場合は、ハンドラを呼び出すだけです: 'onClick = {()=> this.handleClickSelection(i)}' – thedude

1

これにはbindを使用します。以下のような:

あなたの方法に最初のパラメータとして iを渡します
onClick={this.handleClickSelection.bind(this, i)} 

handleClickSelection(i) 
+1

ありがとうございました。それは働いている。あなたはなぜ知っていますか onClick = {this.handleClickSelection.bind(this、i)}。は動作しますが、 onClick = {()=> this.handleClickSelection.bind(this、i)} doesnt?ありがとう。 – user2419831

関連する問題