#reactjs #typescript #next.js
#reactjs #typescript #next.js
Вопрос:
среда
разработки
react.js машинописный
текст next.js
Я не хочу запускать процесс onClick при нажатии тега span.
Как я должен это реализовать?
return (
<div className="padding-16 flex gap-5 flex-container" onClick={onClickUser}>
<img src={img} />
<div className="flex flex-direction gridgap-5">
<p>
{name}
</p>
<p>
{age}
</p>
</div>
<span className="hover" onClick={isShowCard}>
<img src="img/dot.svg" />
</span>
</div>
)
Ответ №1:
Вы можете использовать stopPropagation()
для span
события щелчка.
isShowCard = (event) => {
event.stopPropagation()
...
}
return (
<div className="padding-16 flex gap-5 flex-container" onClick={onClickUser}>
<img src={img} />
<div className="flex flex-direction gridgap-5">
<p>
{name}
</p>
<p>
{age}
</p>
</div>
<span className="hover" onClick={isShowCard}>
<img src="img/dot.svg" />
</span>
</div>
)
Комментарии:
1. Что, если у меня уже есть onclick, определенный в теге span?
2. <img src=»img/dot.svg» /></span>
Ответ №2:
onClickUser
Перед продолжением проверьте, есть ли у него предок с именем класса hover
. Например, изменить:
const onClickUser = (e) => {
// code
};
Для
const onClickUser = (e) => {
if (e.target.closest('.hover')) {
// do nothing
return;
}
// code
};
Комментарии:
1. Это не будет иметь никакого значения вообще, поскольку этот код изменяет только родительский обработчик. Код в ответе будет работать независимо.