У меня есть SVG с сотнями <circle>
элементов, к которым я хотел бы прикрепить событие click. Используя jQuery, это действительно просто:
$('circle').on('click', function(e) {
alert('clicked');
});
Как я могу сделать это в React?
Обычно я бы прикреплял прослушиватель событий к элементу напрямую:
<circle onClick={(e) => handleClick()} />
Видя, что есть сотни элементов, это было бы очень утомительно. Есть ли способ, которым я могу прикрепить один прослушиватель событий к всем круговым элементам?
В моем рабочем решении используется vanilla JS, но оно напрямую взаимодействует с DOM:
useEffect(() => {
const circles = document.querySelectorAll('circle');
for (const trigger of circles) {
trigger.addEventListener('click', (e) => {
alert('clicked');
});
}
}, []);
Я не получаю никаких ошибок, и это работает , но не похоже на React. Я что-то пропустил? Есть ли лучший подход?