请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

memo和useMemo

请问一下为什么将数据传递给 用 memo 包裹的子组件时,一定要用 useMemo 进行缓存?当数据没有缓存时,数据明明没有发生改变,而且子组件memo也会进行浅比较,为什么子组件还会更新?

正在回答

1回答

函数组件、纯函数,特点就是无副作用 —— 当然 useEffect useMemo useCallback 等除外,这些就是为了增加副作用的。

所以,当你不用 useMemo 时,无副作用,数据会重新销毁重建。所以相关的组件也就重新渲染。

而用了 useMemo 就会告诉 React ,这个 state  是被缓存的,无需重建、使用缓存值即可。

0 回复 有任何疑惑可以回复我~
  • 提问者 _驺虞 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2021-06-04 17:57:10
  • 这里可能有问题,具体我在上一小节提问了,自己测试发现 只有引用类型 才会使 memo 失效,因为memo进行对比时候,可能是判断{name:'rym',age:20} === {name:'rym',age:20} 引用的不是同一块内存,false,所以memo认为是不相等,所以才会去更新子组件,而我试了传值类型是可以优化的,不需要使用 useMemo,这里感觉useMemo像是 memo 的补丁以及缓存数据的用途,如有误还请老师指正
    回复 有任何疑惑可以回复我~ 2021-06-06 11:46:52
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信