Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用React onClick防止href触发?_Javascript_Reactjs_Events_Hyperlink - Fatal编程技术网

Javascript 如何使用React onClick防止href触发?

Javascript 如何使用React onClick防止href触发?,javascript,reactjs,events,hyperlink,Javascript,Reactjs,Events,Hyperlink,正在尝试创建链接元素( ) 有什么想法吗 const onbutton单击=(事件)=>{ const onButtonClick = (event) => { event.stopPropagation(); event.nativeEvent.stopImmediatePropagation(); if (clickDisabled) return; if (!onClick) return; onClick(event); } const

正在尝试创建链接元素(

)
有什么想法吗

const onbutton单击=(事件)=>{
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>
)
event.stopPropagation(); event.nativeEvent.stopImmediatePropagation(); 如果(单击禁用)返回; 如果(!onClick)返回; onClick(事件); } 常量handleLink=(e)=>{ e、 预防默认值(); 打开窗户https://URL...","空白",; } 返回( )
我最后使用的解决方法是:我使用了
onMouseDown
按钮,而不是
onClick
,它发生在
href
触发器之前。
这不是最好的解决方案,但对我来说已经足够好了

第一个建议是删除标记,因为您没有使用标记的功能。如果您关心的是样式,那么请使用标记并将链接样式应用到它。锚内的按钮,这不是很符合逻辑的…)但是一个解决方案是为什么不将onClick放在锚点上,并在其上使用preventDefault。。如果你想知道是不是这个按钮确实被按下了,我想会有类似于
targetElement
之类的东西..@SachinVishwakarma但我需要href来获得“在新选项卡中打开”功能。。。所以不能使用span或div@Keith谢谢,尝试将此
onClick
也放在
a
元素上。没什么区别……嘿,谢谢,但我已经试过了。当它到达这个函数的第一行代码时,URL已经改变了…是的。。。也尝试过——将onClick逻辑放在元素本身上。没有运气…再次检查:)。但是你不需要用“a”标签包装一个按钮,只需在按钮onClick事件中打开,但是如果你仍然想要的话。。。你的选择我猜:)很好的尝试,但我仍然想要在同一窗口中定期单击打开url的选项(不是每次单击都应该在新选项卡中打开它,我只需要拥有该选项)
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>
)