星海

React · 单选题 · 第 42 题

前端与全栈开发面试 · 第 42 题

关于 useMemo 和 useCallback,下列说法正确的是?

  1. AuseCallback 缓存的是函数调用后的返回值,useMemo 缓存的是函数本身的引用
  2. B只要用了 useMemo 包裹,组件的子组件在父组件更新时就一定不会重新渲染
  3. CuseMemo 缓存计算结果,useCallback 缓存函数引用,两者都在依赖不变时复用
  4. D两者都会把结果持久化到 localStorage 中,刷新页面之后依然可以直接复用

答案

C C. useMemo 缓存计算结果,useCallback 缓存函数引用,两者都在依赖不变时复用

解析

useCallback(fn, deps) 等价于 useMemo(() => fn, deps),两者都在依赖不变时返回上一次的值,区别只在于缓存的是值还是函数。它们本身不阻止子组件渲染,要配合 React.memo,让子组件拿到稳定的 props 引用才有意义。缓存本身也有开销,不要无脑包裹;React Compiler 可以自动完成大部分这类记忆化。

在线刷这套题:即时判分、错题本、闪卡复习,不用登录就能练。