javascript - useEffect 中的依赖数组 - 我应该传递所有参数
问题描述
考虑情况:
const [value, setValue] = useState(null);
const ref = useRef(null);
const handleClick = useCallback(() => {
if (value) {
ref.current = 'something';
}
}, [ref, value]);
useEffect(() => {
window.addEventListener('click', handleClick);
}, [handleClick]);
所以可以看到handleClick
使用了ref
and value
,所以需要传入dep数组中useCallback
。但是呢useEffect
?
问题:即使我传入ref, value
了依赖数组useCallback
,我是不是也应该把它放在依赖数组里面useEffect
?
所以而不是
}, [handleClick]);
我会
}, [handleClick, ref, value]);
谢谢!
解决方案
您将需要value
in ,useCallback
因为该值在 memoized 函数的范围内,并且您需要handleClick
on ,useEffect
因为您出于同样的原因想要使用更新的函数。您还应该向您添加一个返回值useEffect
以删除侦听器
这是一个代码沙箱,可以使用依赖项并在单击时检查 console.log
推荐阅读
- oracle - 没有可用于 SDO_GEOM.SDO_LENGTH 和 SDO_GEOM.SDO_AREA 的尺寸,并且给出公差的解决方法不起作用
- javascript - 如何使用纬度和经度从两个位置获取距离
- ffmpeg - Ffmpeg 将视频拆分为多个块,但持续时间长度不同
- google-cloud-platform - 为什么即使允许所有访问,我也无法远程登录到谷歌云机器
- azure-active-directory - 可以管理来宾帐户的 Azure AD 自定义管理员
- python - 导入时模拟全局函数调用
- java - 以 Json 和 csv 文件作为附件的 Rest API
- java - 实现生产者和批量消费者模型的最简单java方法
- python - 测试输出在 Jenkins 构建日志中不可见
- javascript - 如何从另一个组件中的组件正确调用函数