首页 > 解决方案 > React Docs 和 useMemo 和 useCallback 的区别

问题描述

使用回调

当我查看 useCallback 和 useMemo 时,我看到了同样的事情。你传入一个函数和一个依赖数组。只有在依赖项发生更改时,该函数才会重新运行。

这行添加在最后,我无法理解:useCallback(fn, deps) is equivalent to useMemo(() => fn, deps)我希望有进一步的解释,它可能有助于我理解这两个函数之间的区别。

从我在网上看到的代码示例中,似乎 useCallback 很自然地用于回调,而 useMemo 用于非回调相关的代码。这些功能只是名称不同吗?一定有一些没有明确说明的事情发生在幕后?useCallback 会记住函数引用,而 useMemo 会记住函数的返回结果吗?

标签: javascriptreactjsreact-hooks

解决方案


下面的两种用法在功能上是等效的:

const fn = useCallback((n) => add(n, n), [add]);

const fn = useMemo(() => (n) => add(n, n), [add]);

useCallbackuseMemo如果在创建回调时不涉及预计算,则可以使用这种特殊情况。


推荐阅读