3 回答

TA貢獻1784條經驗 獲得超7個贊
它將附加多個處理程序,每次isFocused更改時添加一個。要在附加下一個處理程序時刪除前一個處理程序,請返回 React 將調用的函數:
useEffect(() => {
? fetchData()
? Linking.addEventListener('url', _handleEvent)
? return () => Linking.removeEventListener('url', _handleEvent) // <======
}, [isFocused])
無論如何你都想這樣做,以便在你的組件完全卸載時刪除處理程序。

TA貢獻1883條經驗 獲得超3個贊
我想甚至應該打電話一次
useEffect(() => {
Linking.addEventListener('url', _handleEvent)
return () => Linking.removeEventListener('url', _handleEvent) // <======
}, [])

TA貢獻1851條經驗 獲得超3個贊
1、在useEffect回調中,返回移除監聽的函數;2、每次在綁定之前移除監聽器。例如:
useEffect(() => {
window.removeEventListener('url', hander);
window.addEventListener('url', hander);
return () => window.removeEventListener('url', hander);
}, [XXX])
添加回答
舉報