繁体   English   中英

React 中的 Chrome 扩展事件处理程序

[英]Chrome-Extension eventHandler in React

我目前正在尝试构建 Chrome 扩展程序。 为此,我使用了一个反应应用程序。 所有的渲染和东西都在工作。 问题是 chrome 事件处理程序。

在我的反应应用程序中,我有一个上下文。

在这个上下文中是一个useEffect钩子,我在其中注册事件:

useEffect(() => {
  chrome.tabs.onUpdated.addListener(myListener)
}, []);

监听器 function 在上下文中使用来自useState的变量,因此每次这些变量更改时我都必须更新监听器。

当然还有removeEventListener function,但是当我调用它时,它什么也没做,因为 function 已经改变了,因此 Chrome 认为没有注册这样的监听器。

有谁知道如何删除旧听众或清除所有听众?

解决方案代码片段:

const handlerRef = useRef();
useEffect(() => {
    if(handlerRef.current){
        chrome.yourField.yourUpdate.removeListener(handlerRef.current);
    }
    chrome.yourField.yourUpdate.addListener(handler);
}, [yourDependencies]);
useEffect(() => {
     handlerRef.current = handler;
});

感谢@wOxxOm!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM