[英]How can I prevent href from firing using React onClick?
trying to make a link element ( <a>
element) with href
.尝试使用href
制作链接元素( <a>
元素)。 Why am I using href
and not changing history
?为什么我使用href
而不是更改history
? because I want the option to open in a new tab in browser.因为我想要在浏览器的新标签页中打开的选项。
The Problem is, I have a button inside the element, and when you click on it, it triggers the href
immediately, before even getting to stopProppagation
or preventDefault
inside the onClick
handler of the button.问题是,我在元素中有一个按钮,当你点击它时,它会立即触发href
,甚至在按钮的onClick
处理程序中停止stopProppagation
或preventDefault
之前。 It's like 2 different event types…这就像 2 种不同的事件类型……
something like this:像这样:
...
const onButtonClick = (event) => {
event.stopPropagation();
event.nativeEvent.stopImmediatePropagation();
event.preventDefault();
if (clickDisabled) return;
if (!onClick) return;
onClick(event);
}
return (
<a href={someHref}>
<button onClick={onButtonClick}>open menu</button>
</a>
)
Any ideas?有任何想法吗?
The workaround I ended up using: instead of the button onClick
- I used onMouseDown
which happens before the href
trigger.我最终使用的解决方法是:而不是按钮onClick
- 我使用了onMouseDown
,它发生在href
触发器之前。 Not the best solution, but was good enough in my case.不是最好的解决方案,但对我来说已经足够了。
const onButtonClick = (event) => {
event.stopPropagation();
event.nativeEvent.stopImmediatePropagation();
if (clickDisabled) return;
if (!onClick) return;
onClick(event);
}
const handleLink = (e) => {
e.preventDefault();
window.open('https://URL...', '_blank');
}
return (
<a href={someHref} onClick={handleLink}>
<button onClick={onButtonClick}>open menu</button>
</a>
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.