javascript - React Docs 和 useMemo 和 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
如果在创建回调时不涉及预计算,则可以使用这种特殊情况。
推荐阅读
- c++ - OpenGL上的黑屏
- r - 在 ggplot 条形图中排序类别
- c - pthread_join() 导致段错误
- c - MPI_Irecv 问题
- push-notification - 在 iOS 12 中使用临时授权设置应用程序徽章
- octobercms - 在 CMS 后端编辑器中修改页面后,为什么我的变量丢失了
- mono - 如何减小aspnet/blazor编译的dll/wasm的大小?
- google-cloud-platform - 从压缩的 RAW 图像创建 GCP 图像
- python - 以不同格式对 IP 地址进行排序
- javascript - 单独的对象分配不会触发 React 中的状态更改