Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.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 使用addEventListener阻塞onClick处理程序_Javascript_Reactjs - Fatal编程技术网

Javascript 使用addEventListener阻塞onClick处理程序

Javascript 使用addEventListener阻塞onClick处理程序,javascript,reactjs,Javascript,Reactjs,我有一个带有onClick事件的按钮: <button id="my-button" onClick={myMethod}> My button </button> 是否可以在侦听器中添加一些方法,从而停止调用myMethod?将React事件处理和原始DOM事件处理结合起来通常表明存在更大的设计问题。一方与另一方的冲突更加严重。:-) 话虽如此,React的事件处理程序使用委托,因此标准的e.stopPropagation应该这样做: const listene

我有一个带有
onClick
事件的按钮:

<button id="my-button" onClick={myMethod}>
   My button
</button>

是否可以在
侦听器
中添加一些方法,从而停止调用
myMethod

将React事件处理和原始DOM事件处理结合起来通常表明存在更大的设计问题。一方与另一方的冲突更加严重。:-)

话虽如此,React的事件处理程序使用委托,因此标准的
e.stopPropagation
应该这样做:

const listener = (e) => {
    e.stopPropagation();
    console.log('Hello, world!');
};
例如:

函数myMethod(){
console.log(“myMethod”);
}
常量示例=()=>
我的纽扣
;
ReactDOM.render(
,
document.getElementById(“根”)
);
常量侦听器=(e)=>{
//在此处(或其他地方)执行某些操作以防止调用“myMethod”
e、 停止传播();
log('Hello,world!');
}
const options={capture:true,once:true};
document.getElementById('my-button'))
.addEventListener(“单击”,侦听器,选项)


您是否尝试过
event.preventDefault()?是
myMethod
您的代码吗?您不应该混合使用react和普通js处理程序。这只会造成混乱。@AbSin-@AbSin Cause
onClick
是React
s道具的一部分,它不会反映到DOM中。@jonaswillms-我假设(很可能是错误的:-)OP在发生这种情况时正在重新连接事件侦听器。但提出的观点很好,回答得很好。幸运的是,我在某种程度上附加了侦听器,它总是在那里。不知道哪个事件将被视为
top
事件-在
onClick
属性中的事件,或者添加到
AddEventListener
中的事件。它澄清了一些事情+本周日下午的一些更多的反应知识:)谢谢!
const listener = (e) => {
    e.stopPropagation();
    console.log('Hello, world!');
};