2016-09-10 20 views
3

以下のコードでイベントハンドラから引数を渡すことができます。イベントハンドラのコールバックでイベント+引数を渡す

しかし、私はeventをどうすればhandleDownに渡すことができますか?

class Parent extends React.Component { 
    handleDown(argumentOne) { 
    } 
    render() { 
    return (
     <div> 
     <Child 
      handleDown={this.handleDown.bind(this)} 
     /> 
     </div> 
    ); 
    } 
} 

class Child extends React.Component { 
    constructor(props) { 
    super(props); 
    } 
    render() { 
    return (
     <div> 
     <span 
      onMouseDown={this.props.handleDown.bind(this, 'argumentOne')} 
     > 
     Click here 
     </span> 
     </div> 
    ); 
    } 
} 
+1

コンストラクタ内で 'props'にアクセスする必要がなければ、' super(props) 'は不要です。あなたが知らない場合に備えて。 – ftor

答えて

3

どのように私は同様の機能handleDownにイベントを渡すのでしょうか?

あなたは、イベントメカニズムはありませんが、問題のコードを与え、handleDownは、ご提供いただいたものの後の最初の引数としてイベントを受け取ることになりますしません。だからここ

<Child 
    handleDown={this.handleDown.bind(this)} 
/> 

それはhandleDownの最初の引数であること、そしてここになります

<span 
    onMouseDown={this.props.handleDown.bind(this, 'argumentOne')} 
> 

それはhandleDownの二番目の引数になります。

おそらく最初のbindコールをnullなどのように変更して、それを一貫して2番目の引数として渡すようにしてください。しかし、Reactが特別なことをしなければ、常にlastという引数になるので、それから作業することができます。

関連する問題