Есть ли способ добавить все события из родительского элемента во все дочерние элементы с помощью ReactJS без жесткого кодирования всех событий?
<div className='myClass' onClick = {handleSelect} onDoubleClick = {handleOpen}>
<span className='child' />
</div>
Обработчики кликов распространяются, поэтому в этом нет необходимости. Прикрепите один обработчик к родителю.
const App = () => {
const handleSelect = () => console.info('click');
const handleOpen = () => console.info('double click');
return (
<div className='myClass' onClick = {handleSelect} onDoubleClick = {handleOpen}>
<span className='child'>child</span>
</div>
);
};
ReactDOM.render(<App />, document.querySelector('.react'));
<script crossorigin src = "https://unpkg.com/react@16/umd/react.development.js"></script>
<script crossorigin src = "https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<div class='react'></div>
Если вам нужно определить, какой дочерний элемент был нажат, или исключить определенные дочерние элементы из-за запуска обработчика, используйте событие, переданное обработчику, и посмотрите, соответствует ли его цель тому, что вы ищете.
Как правило, нет, но, в частности, это было бы антипаттерном философии React. React делает элементы частью кода, а не делает код частью DOM.