首页 > 解决方案 > 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使用了refand value,所以需要传入dep数组中useCallback。但是呢useEffect

问题:即使我传入ref, value了依赖数组useCallback,我是不是也应该把它放在依赖数组里面useEffect

所以而不是

}, [handleClick]);

我会

}, [handleClick, ref, value]);

谢谢!

标签: javascriptreactjs

解决方案


您将需要valuein ,useCallback因为该值在 memoized 函数的范围内,并且您需要handleClickon ,useEffect因为您出于同样的原因想要使用更新的函数。您还应该向您添加一个返回值useEffect以删除侦听器

这是一个代码沙箱,可以使用依赖项并在单击时检查 console.log


推荐阅读