React Docs 以及 useMemo 和 useCallback 的区别
React Docs and difference between useMemo and useCallback
当我查看 useCallback 和 useMemo 时,我看到了同样的事情。您传入一个函数和一组依赖项。如果依赖关系发生变化,该函数只会重新运行。
这一行加在最后,我看不懂:useCallback(fn, deps) is equivalent to useMemo(() => fn, deps)
希望有进一步的解释,这可能有助于我理解这两个函数之间的区别。
从我在网上看到的代码示例来看,似乎 useCallback 自然地用于回调,而 useMemo 用于非回调相关的代码。这些功能只是名称不同吗?幕后一定有什么事情没有明确说明? useCallback 是否记忆了函数引用,而 useMemo 记忆了函数的返回结果?
以下两种用法在功能上是等价的:
const fn = useCallback((n) => add(n, n), [add]);
const fn = useMemo(() => (n) => add(n, n), [add]);
useCallback
是 useMemo
的特例,如果没有 pre-computation 参与创建回调,您可以使用它。
当我查看 useCallback 和 useMemo 时,我看到了同样的事情。您传入一个函数和一组依赖项。如果依赖关系发生变化,该函数只会重新运行。
这一行加在最后,我看不懂:useCallback(fn, deps) is equivalent to useMemo(() => fn, deps)
希望有进一步的解释,这可能有助于我理解这两个函数之间的区别。
从我在网上看到的代码示例来看,似乎 useCallback 自然地用于回调,而 useMemo 用于非回调相关的代码。这些功能只是名称不同吗?幕后一定有什么事情没有明确说明? useCallback 是否记忆了函数引用,而 useMemo 记忆了函数的返回结果?
以下两种用法在功能上是等价的:
const fn = useCallback((n) => add(n, n), [add]);
const fn = useMemo(() => (n) => add(n, n), [add]);
useCallback
是 useMemo
的特例,如果没有 pre-computation 参与创建回调,您可以使用它。