Говоря о event.stopPropagation()
или event.stopImmediatePropagation()
, мы говорим о термине Event bubbling
(или Bubbling
для краткости). Поэтому убедитесь, что вы знаете об этом, в противном случае, пожалуйста, ознакомьтесь с этой статьей
В приведенной выше статье вы можете найти эту one :
Если элемент имеет несколько обработчиков событий для одного события, то даже если один из них останавливает восходящую цепочку, другие все равно выполняются.
1. event.stopPropagation()
останавливает движение вверх, но на текущем элементе будут выполняться все остальные обработчики.
2. Чтобы остановить восходящую цепочку и предотвратить запуск обработчиков текущего элемента, существует метод event.stopImmediatePropagation()
. После этого никакие другие обработчики не выполняются.
Возвращаясь к вашей проблеме, это относится к более позднему случаю. У вас есть два обработчика onClick
, прикрепленных к document
, поэтому использование event.stopPropagation()
здесь не подходит, а event.stopImmediatePropagation()
.
--- Обновление 1:
React (в настоящее время ) использует прослушиватель на document
для (почти) всех событий, поэтому к тому времени, когда ваш компонент получит событие, он уже всплывет до document
.
Это означает, что более поздний Обработчик onClick
, прикрепленный к элементу aside
, будет всплывать до document
.