2016-11-18 2 views
0

У меня есть компонент, который выполняет действие, когда вы нажимаете на него, если вы не нажмете на определенные дочерние компоненты, у которых есть собственные обработчики onClick. Эти обработчики onClick могут помешать своим родителям выполнить стандартное действие, вызвав e.stopPropagation. Как мне аналогичным образом захватить и stopPropagation() на мероприятии ReactSelect компонента onClick? Нормальный обработчик onClick никогда не вызывается.Как вызвать `e.stopPropagation()` для события `onClick` с компонентом` response-select`?

Это в основном установки, как описано (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

Не могли бы вы установить один рабочий пример в кодефене или в webpackbin? –

+1

Попробуйте атрибут 'onChange' – maioman

+0

@maioman, атрибут' onChange' возвращает измененное значение в качестве первого аргумента, а не связанное событие click –

ответ

1

я смотрел на все события из реакции, выберите, но, кажется, что он не подходит к вашей цели.

Я полагаю, что в качестве обходного пути вы можете попытаться обернуть компонент ReactSelect в другой элемент.

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

Но если я назову 'e.stopPropagation()' на клике 'span', тогда не будут ли распространяться и на компонент ? –

+0

Нет, не будет. Это работает для вас? – Max

Смежные вопросы