2016-10-11 8 views
0

カスタムコンポーネントで「preventDefault」を何らかの方法で呼び出そうとしています。ここに私の試みがあります。 "e"の最初の試行では、実際のイベントではなく要素参照が渡されます。 2番目のメソッドはイベントを渡しますが、デフォルトのメソッドの防止は何も妨げません。これを行う最善の方法は何ですか?ReactJSのonClickでイベントを渡す方法

<MyComponent header= { 
    <div onClick={e => { e.preventDefault(); myFunction.bind(this, event) }}> 
     Header 
    </div> 
} /> 

function myFunction(event) { 
    event.preventDefault(); 
} 
+0

あなたが小道具を通じてJSX渡しているのはなぜ? – notgiorgi

+0

このようなことをやめると、より良い方法があるはずですので、探し続けることをお勧めします。 –

+0

@notgiorgi - 私はすでに他のjsxプロパティに "Children"を使用しているので、ヘッダjsxを渡すために残っている場所はありません。 – Lambert

答えて

1

私はこのようにそれを行うだろう:あなたはクリックハンドラでthisを使用する必要がある場合

<MyComponent header={<div onClick={myFunction}>Header</div>} /> 

function myFunction(event) { 
    event.preventDefault(); 
} 

または、:

class App extends React.Component { 
    myFunction = (event) => { 
    event.preventDefault(); 
    this.setState({ clicked: true }); 
    } 

    render() { 
    return (
     <MyComponent header={<div onClick={this.myFunction}>Header</div>} /> 
    ) 
    } 
} 
+1

太い矢印( '=>')はこれを行います。しかし、まだES6機能を使用できない場合は、明示的にバインドする必要があります。 – tobiasandersen

+0

ええ、申し訳ありませんが、あなたは正しいです。 – notgiorgi

+0

@tobiasandersen - このようにすると、要素への参照が実際のイベントではなく「myFunction」に渡されます。それは私の機能がクラスの外にあるからですか? – Lambert

関連する問題