2017-08-09 12 views
0

理由は分かりませんが、子コンポーネントに渡す親の関数に対してonClick関数を設定できません。これは、親からのコードです:反応内の子コンポーネントに関数を渡すことはできませんか?

_renderChatFriend() { 
    return([...this.state.friendsNames].map(friend => { 
     return (<ChatFriendPopUp 
      onChatFriendPopUpClick={this.popUpMessage} 
      key={friend.id} 
      name={friend.name} 
     />) 
    })) 
    } 

と子コンポーネントのコード:

class ChatFriendPopUp extends Component { 
    popUpMessage(name) { 
    console.log("name clicked ",name) 
    } 
    render() { 
    return (
     <li onClick={this.props.onChatFriendPopUpClick(this.props.name)}>{this.props.name}</li> 
    ) 
    } 
} 

onClickのはマウント時に呼び出されますか?クリックすると呼び出されません。私は引数を渡さないとonClickで呼び出すことができます。このようなコードですが、参照はできません。

<li onClick={this.props.onChatFriendPopUpClick}> // not passing argument works? 
+1

あなたはそれを望んでいるとは思っていません。あなたは実際にそれを使用する方法を尋ねていますが、パラメータを渡していますか? –

+0

[Reactjs Audio button?](https://stackoverflow.com/questions/43359992/reactjs-audio-button)の重複している可能性があります –

答えて

5

コールバック関数として追加する必要があります。それ以外の場合はすぐに呼び出されます。これに変更する

<li onClick={() => this.props.onChatFriendPopUpClick(this.props.name)}>{this.props.name}</li> 
+0

私はこれについてもっと読むことができるようにリンクがありますか?それは動作しますが、私は何かが欠けているように感じます –

+1

@iamnewbie Reactチュートリアルはいいスタートですが、JavaScript固有のものです。 https://facebook.github.io/react/docs/handling-events.html –

+0

ahaありがとうございます。縛られていない。驚くばかり –

関連する問題