2016-11-18 4 views
0

Ich habe eine Komponente, die eine Aktion ausführt, wenn Sie irgendwo darauf klicken, es sei denn, Sie klicken auf bestimmte untergeordnete Komponenten, die eigene onClick Handler haben. Diese onClick Handler können verhindern, dass ihre Eltern die Standardaktion ausführen, indem sie e.stopPropagation aufrufen. Wie erfasse ich in ähnlicher Weise und stopPropagation() auf der ReactSelect Komponente onClick Ereignis? Der normale onClick-Handler wird nie aufgerufen. DieseSo rufen Sie `e.stopPropagation()` für das `onClick`-Ereignis mit der` react-select`-Komponente auf?

ist im Grunde die Einrichtung wie beschrieben (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

Würdest du bitte ein funktionierendes Beispiel in Codepen oder in webpackbin setzen? –

+1

versuchen 'onChange' Attribut – maioman

+0

@ Maioman, das' onChange'-Attribut gibt den geänderten Wert als erstes Argument zurück, nicht das zugeordnete Klickereignis –

Antwort

1

Ich habe einen Blick auf alle Ereignisse aus reagieren Auswahl, scheint aber, dass es nicht Ihr Zweck passt.

Ich nehme an, als Workaround können Sie versuchen, die ReactSelect Komponente in ein anderes Element zu wickeln.

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

Aber wenn ich 'e.stopPropagation()' auf die 'span's klicke, dann Wird das nicht auch auf die Komponente übertragen? –

+0

Nein, wird es nicht. Geht das für dich? – Max

Verwandte Themen