2016-11-18 24 views
0

私は、それ自身のonClickハンドラを持つ特定の子コンポーネントをクリックしない限り、その上の任意の場所をクリックしたときにアクションを実行するコンポーネントを持っています。それらのonClickハンドラは、e.stopPropagationを呼び出すことによって、親が標準アクションを実行するのを防ぐことができます。どのようにして同じようにキャプチャし、のReactSelectコンポーネントのonClickイベントにありますか?通常のonClickハンドラは呼び出されません。`react-select`コンポーネントで` onClick`イベントの `e.stopPropagation()`を呼び出す方法は?

これは、基本的には(ES6)説明するようにセットアップされている:

handleMost = e => { 
    // Note that I cannot check e.target here, because there is a bunch 
    // of other stuff that might be the target that still should cause 
    // the standard action to occur 
    doStandardThing(); 
} 

handleFoo = e => { e.stopPropagation(); doSomethingFoo(); }} 
handleBar = e => { e.stopPropagation(); doSomethingBar(); }} 
handleBaz = e => { e.stopPropagation(); doSomethingBaz(); }} 

<ListItem onClick={handleMost}> 
    <Foo onClick={handleFoo} 
    <Bar onClick={handleBar} 
    <ReactSelect ?????={handleBaz} 

    <OtherStuff ...> 
</ListItem> 
+0

codepenまたはwebpackbinで1つの動作例を設定してください。 –

+1

'onChange'属性を試してください – maioman

+0

@maioman、' onChange'属性は、変更された値を関連するクリックイベントではなく最初の引数として返します –

答えて

1

は私が反応し、選択からすべてのイベントを見ていたが、それはあなたの目的に適合していないようです。

別の要素にReactSelectコンポーネントをラップしようとする可能性があります。

<span onClick={e => ....}> 
    <ReactSelect /> 
</span> 
+0

'span'のクリックで' e.stopPropagation() 'を呼び出すとコンポーネントへの伝播を停止しないでください。 –

+0

いいえ、そうではありません。これはあなたのために働きますか? – Max

関連する問題