memo和useMemo

来源:14-9 使用useCallback做性能优化

_驺虞

2021-06-03

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

写回答

1回答

双越

2021-06-03

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

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

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

0
2
起点丶
这里可能有问题,具体我在上一小节提问了,自己测试发现 只有引用类型 才会使 memo 失效,因为memo进行对比时候,可能是判断{name:'rym',age:20} === {name:'rym',age:20} 引用的不是同一块内存,false,所以memo认为是不相等,所以才会去更新子组件,而我试了传值类型是可以优化的,不需要使用 useMemo,这里感觉useMemo像是 memo 的补丁以及缓存数据的用途,如有误还请老师指正
2021-06-06
共2条回复

前端框架及项目面试 聚焦Vue3/React/Webpack

面向1-3年前端的框架及项目面试“刚需内容”

4695 学习 · 1667 问题

查看课程