У меня есть OnClick прилагается ко всему компоненту, где бы щелкнул закрывает компонент:reactjs остановить распространение, вызвать другую функцию SetState
<div className="container" onClick={this.onClick.bind(this,'str')}>
{this.state.showtoggle ? <Child2 /> : <Child1 />}
</div>
Но внутри компонента Child2, я не хочу, чтобы весь компонент должен быть кликабельным. 1) Могу ли я присоединить обработчик кликов только к Child1 - с этой условной логикой на месте 2) Или я пытаюсь остановитьPropagation в child2 - но состояние не обновляется, как ожидается, после того, как preventDefault ... любая идея?
Код внутри Child2:
handleClick(event){
event.preventDefault();
event.stopPropagation();
event.nativeEvent.stopImmediatePropagation();
if(event.target.name === 'b2'){
this.setState({
toggleClassname: 'b2',
});
}
}
<button name="b1" onClick={this.handleClick} className={`btn-element ${(this.state.toggleClassname === 'b1') ? 'red' : ''}`}>button1</button>
<button name="b2" onClick={this.handleClick} className={`btn-element ${(this.state.toggleClassname === 'b2') ? 'red' : ''}`}>button2</button>
Мне все еще нужен этот обработчик onclick в, но не на всем компоненте только на изображении нажмите внутри Child2, но на целом child1 ..? Как это сделать? –
monkeyjs
Обновлен ответ, в основном просто делайте то же самое для обоих компонентов, поместив обработчик кликов там, где он нужен. –