![](/img/trans.png)
[英]Axios.delete in React: `Error:DELETE chrome-extension://…`
[英]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.