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])
添加回答
举报