Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.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 移除onclick react_Javascript_Reactjs - Fatal编程技术网

Javascript 移除onclick react

Javascript 移除onclick react,javascript,reactjs,Javascript,Reactjs,我有一个关于onClick事件的div。在应用程序的某个时刻,我希望删除该事件。我怎么做? 我试过: document.removeEventListener('click', this.function) document.removeEventListener('mousedown', this.function) 我假设div是在React代码中使用click处理程序设置的,而不是直接通过addEventListener。这就是为什么不能使用removeEventListener删除它;

我有一个关于onClick事件的div。在应用程序的某个时刻,我希望删除该事件。我怎么做? 我试过:

document.removeEventListener('click', this.function)
document.removeEventListener('mousedown', this.function)

我假设div是在React代码中使用click处理程序设置的,而不是直接通过
addEventListener
。这就是为什么不能使用
removeEventListener
删除它;这就是React的工作原理

您至少有两种选择:

  • 使呈现
    div
    的组件有状态,并在呈现
    div
    时使用该状态使
    onClick
    或note

  • 使呈现
    div
    stateful的组件始终具有处理程序,但实际上仅根据状态在其中执行某些操作

  • #2相当简单:在处理程序中,检查状态以确定是否应该执行某些操作

    #1还有一点,下面是一个#1的示例,其中一个勾选框控制
    div
    是否有
    onClick
    (使用钩子):

    const{useState,useCallback}=React;
    函数示例(){
    const[flag,setFlag]=使用状态(true);
    const onFlagChange=useCallback(e=>{
    setFlag(例如,目标已选中);
    }, []);
    const handleClick=useCallback(e=>{
    log(`div单击${new Date().toISOString()}`);
    }, []);
    返回(
    已启用处理程序
    单击此处查看处理程序是否触发
    );
    }
    ReactDOM.render(
    ,
    document.getElementById(“根”)
    );
    
    尝试直接从div中删除侦听器

    const your_div = document.getElementById('your_div_id');
    your_div.removeEventListener('click', this.function)
    

    如果您提供了一个演示问题的工具,我们可以更好地帮助您,最好是使用堆栈片段(
    []
    工具栏按钮)运行的工具。堆栈代码段支持React,包括JSX。这回答了你的问题吗@rdarioduarte-这个问题相当不清楚,但我没有得到他们谈论的是直接处理事件的DOM元素的印象。为什么要在react中注册事件侦听器?React提供了这个开箱即用的功能。@Kobe-不清楚OP是否直接注册了处理程序。为什么减号?我了解react中的良好实践,但看到这个家伙已经通过
    addEventListener
    函数实现了listener,我们不知道这个功能有多大。重构成
    良好实践
    并不总是最好的方法,尤其是在大型项目中。FWIW,问题是OP没有使用
    addEventListener