如何解决反应本机使用useEffect钩子删除scrollY侦听器
const [scrollY] = useState(new Animated.Value(0));
const [scrollYValue,setScrollYValue] = useState(0);
useEffect(() => {
scrollY.addListener(({ value }) => {
setScrollYValue(value);
});
return scrollY.removeAllListeners();
},[scrollY,scrollYValue,setScrollYValue]);
目标是实例化一个名为scrollY
的Animated.Value并添加一个侦听器,该侦听器会将当前滚动值设置为state。此滚动值scrollYValue
在各个组件之间共享,因此它们可以根据用户滚动的距离来执行所需的操作。
如果我删除return scrollY.removeAllListeners();
行,那么一切正常,但实际上我确实想在卸载此组件时删除侦听器。
这是我的useEffect
依赖项数组不正确的情况吗?似乎立即删除了侦听器,并且scrollY固定为0
。
解决方法
更新:useEffect
中的返回值应该是一个函数:
useEffect(() => {
scrollY.addListener(({ value }) => {
setScrollYValue(value);
});
return () => scrollY.removeAllListeners();
},[scrollY,scrollYValue,setScrollYValue]);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。