我有一个Backdrop_DIV基于open下拉组件的a 呈现的。
{open &&
<LS.Backdrop_DIV
onClick={handleBackdropClick}
ref={backdrop_ref}
>
Backdrop
</LS.Backdrop_DIV>
}
Backdrop_DIV如果用户滚动 ( touchmove),我希望它消失。
Obs:这是一个移动视图。
const handleTouchMove = useCallback(()=>{
setOpen(false);
},[]);
useEffect(() => {
if (open) {
// ATTACHING THE EVENT LISTENR
backdrop_ref.current.addEventListener('touchmove', handleTouchMove );
}
// ATTEMPT TO REMOVE THE EVENT LISTENER
return () =>
backdrop_ref.current.removeEventListener('touchmove', handleTouchMove);
},[open,handleScroll]);
它有效,但如果在我尝试清除我的useEffect. 有没有办法做到这一点?
错误:
react-dom.development.js:20313 未捕获的类型错误:无法读取 null 的属性“removeEventListener”
这个错误很明显,因为Backdrop_DIV它在运行时不再挂载。
题
在这种情况下,我需要费心删除事件侦听器吗?我能做什么?
皈依舞
相关分类