Пример для всплытия и захвата в React.js

16

Я ищу пример при обработке Bubbling и Capturing в React.js. Я нашел один с JavaScript, но мне трудно найти эквивалент для React.js.

Как мне создать пример для Bubbling и Capturing в React.js?

  • 1
    пузырьковое событие - это концепция события, специфичная для DOM. Весь смысл React - убежать от DOM. Это можно сделать в React, создав функции компонентов и передав их потомкам через реквизиты.
  • 0
    Посмотрите на события React и слушатели событий React DOM
Теги:
event-bubbling

1 ответ

38
Лучший ответ

Bubbling и capture поддерживаются React так же, как описано в спецификации DOM, за исключением того, как вы собираетесь подключать обработчики.

Bubbling так же просто, как и с обычным DOM API; просто присоедините обработчик к возможному родительскому элементу элемента, и любые события, инициированные на этом элементе, будут пузыряться с родителем, если он не остановится через stopPropagation по пути:

<div onClick={this.handleClick}>
  <button>Click me, and my parent `onClick` will fire!</button>
</div>

Захват так же прост, хотя упоминается только в документах. Просто добавьте Capture в имя свойства обработчика события:

<div onClickCapture={this.handleClickViaCapturing}>
  <button onClick={this.handleClick}>
    Click me, and my parent `onClickCapture` will fire *first*!
  </button>
</div>

В этом случае, если handleClickViaCapturing вызывает stopPropagation в событии, обработчик кнопки onClick не будет вызываться.

Этот JSBin должен продемонстрировать, как работает захват, пузырь и stopPropagation в React: https://jsbin.com/hilome/edit?js,output

  • 7
    Что следует иметь в виду, все события vanilla javascript, например, из библиотеки, вызываются заранее. Неважно, зарегистрируете ли вы событие в фазе захвата или пузыря.
  • 0
    Что если я хочу обратного? Что делать, если у меня есть onClick для родителя, и я хочу вызвать эту функцию, даже когда ребенок нажимается?
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню