我有一个父div,它的功能就像一张卡片,里面包含了像图像、文本和锚链接这样的子元素。
我希望整个div都是可点击的,但也允许用户点击div中的特定链接。
现在我使用onClick
作为整个div,并使用Link
(React Router)作为子元素。但是,当用户单击Link
时,它会同时触发Link
和div
。
我试着在Link
到stopPropagation
中添加一个onClick
方法,但onClick
方法从未被触发。有什么办法可以解决这个问题吗?
interface Props {
children?: any;
onClick: () => void;
}
function CardDiv(props: Props) {
return (
<div
onClick={props.onClick}
>
{props.children}
</div>
);
}
export default CardDiv;
<CardDiv
className="Card__main"
onClick={() => {
console.log("PARENT");
}}
>
<Link
to="https://www.example.com/"
onClick={(event: React.MouseEvent<HTMLAnchorElement, MouseEvent>) =>
console.log("CHILD");
event.stopPropagation();
}
>
<b>{props.title}</b>
</Link>
</CardDiv>
Link
中的click方法永远不会被调用。当我点击链接时,它会把我带到url,并触发父onClick
方法。
1条答案
按热度按时间wswtfjt71#
是的,这可以通过有条件地执行onClick函数来轻松实现。例如,考虑下面一个更简单的示例:
更详细地描述您的代码,我们可以通过设置一些类或id链接来实现这一点,尝试一下