【问题标题】:JavaScript remove event listener with paramsJavaScript 使用参数移除事件监听器
【发布时间】:2022-11-02 03:36:05
【问题描述】:

我正在添加一个需要事件属性以及其他参数的事件侦听器

    document.body.addEventListener("click", (e) =>
        listenForMembersOpen(e, buttonReplacement, openEditModal)
    );

当我的组件卸载但正在运行时,我需要删除此事件侦听器:

    document.body.removeEventListener("click", (e) =>
        listenForMembersOpen(e, buttonReplacement, openEditModal)
    );

似乎没有完成工作。我认为这是因为事件侦听器中的函数声明。关于如何删除显示的事件列表器的任何建议?

【问题讨论】:

    标签: javascript reactjs dom


    【解决方案1】:

    是的。您需要有一个函数,否则 javascript 将无法找到函数参考

        function listener (e) {
           listenForMembersOpen(e, buttonReplacement, openEditModal)
        }
    
        document.body.addEventListener("click", listener);    
        document.body.removeEventListener("click", listener);
    
    

    【讨论】:

    • buttonReplacementopenEditModal 如何传递给 listenForMembersOpen 函数?
    • 我认为您的操作方式与您相同,但是您可以发布其余代码吗,我想了解