ref 需不需要作为依赖参数传给 useCallback 或者 useMemo

问题描述

在 react 官网的 Hooks FAQ 中有一些关于 useCallback 用法的例子,比如自定义的 useEventCallback 函数,其中会在 useCallback 的依赖参数中加入 ref。

可是 useRef 返回的 ref 不是在函数式组件的生命周期中都不会发生引用上的变化吗,为什么还要作为依赖参数加入呢?

相关代码

function useEventCallback(fn, dependencies) {
  const ref = useRef(() => {
    throw new Error('Cannot call an event handler while rendering.');
  });

  useEffect(() => {
    ref.current = fn;
  }, [fn, ...dependencies]);

  return useCallback(() => {
    const fn = ref.current;
    return fn();
  }, [ref]);
}

想问问各位大佬们 ref 作为依赖参数的意义,以及什么时候场景下会有 ref 的变更?

阅读 2.2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题