it-swarm.com.ru

Реагировать - как захватить событие onClick только родителя, а не детей

У меня есть часть реагирующего компонента, как это:

var headerElement = someBoolean ? <input/> : 'some string';
return <th onClick={this._onHeaderClick}>{headerElement}</th>;

И обработчик кликов для элемента th:

_onHeaderClick(event) {
    event.preventDefault();
    console.log(event.target);
},

Я хочу захватить де-й элемент. Он прекрасно работает, когда headerElement - это «некоторая строка», но когда это элемент ввода, элемент ввода - это тот элемент, на который есть ссылка в поле event.target. Какой лучший способ достичь этого?

23
Daniel Calderon Mori

Поскольку вы привязываете обработчик к th, вы можете использовать свойство currentTarget . Свойство target относится к элементу, отправившему событие.

_onHeaderClick(event) {
    event.preventDefault();
    console.log(event.currentTarget);
}
52
Arun P Johny

Проверь их

_onHeaderClick(event) {
   event.preventDefault();
   if(event.target === event.currentTarget) {
      // handle
   }
}
13
nghiepit

Как это?

event.target.parentNode
5
Bhojendra Rauniyar

просто используйте event.currentTarget

 onClick(e) {
    e.preventDefault();
    console.log(e.currentTarget);
}
0
Sabir Hussain