Код выглядит следующим образом
<ul className = "sb-modules-list">
<li key = {index} className = {this.getModuleClass(module)} onClick = {() => { alert(127) }}>
<ul className = "sb-module-steps-list">
{ module.steps && module.steps.map((stepInfo, stepIndex) =>
<li key = {stepIndex} className = {this.getStepClass(stepInfo)} onClick = {() => { alert(456) }}>
<p>{stepInfo.short_title}</p>
</li>
)}
</ul>
</ul>
Проблема в том, что когда я нажимаю на самый внутренний дочерний тег Ли, он запускает событие onclick как для дочернего, так и для родительского.
Например, в этом случае щелчок запускает предупреждение (456), а также предупреждение родительской функции (123);
Я не хочу, чтобы родительский метод запускался при нажатии на дочерний элемент. Есть идеи, как это исправить?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы должны поместить объект event в список параметров вашего родителя и использовать его, чтобы предотвратить то, что может произойти:
Ты можешь сделать это:
onClick = {(e) => { e.target === e.currentTarget && alert(127) }
Вы можете (и, вероятно, должны) использовать if, который немного более подробный, но более легкий для понимания:
onClick = {(e) => { if (e.target !== e.currentTarget) return; alert(127) }
Вы можете использовать event.stopPropagation(), чтобы предотвратить всплытие событий. Рассмотрим этот пример обработчика кликов:
const handleClick = (event, value) => {
event.stopPropagation();
alert(value);
}
Тогда вы можете использовать это так:
<li onClick = {event => handleClick(event, 127)}></li>