![](/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.