memo、useCallback、useMemo三者的区别

memo、useCallback、useMemo三者的区别

相同点

1.都是在函数式组件中使用
2.都是为了阻止子组件的被动渲染(父组件重新render,子组件也跟着render)

不同点
1.memo

memo类似于PureCompoent 作用是优化组件性能,防止组件触发重渲染
不足: 如果参数中含有函数不能阻止
有点: 缓存组件
使用场景: 不给子组件传递函数,并且子组件根据自身以来渲染

2.useMemo

useMemo其实和memo是一样的
不足: 如果参数中含有函数不能阻止
优点: 缓存变量(返回的变量)
使用场景: 不给子组件传递函数,并且子组件根据自身以来渲染
useMemo使用
在子组件中通过memo方法,对子组件进行包裹
在父组件中,通过useMemo对传给子组件的数据进行包裹

const ChildComponent = memo(() => {
  return <div></div>;
});

const ParentComponent = () => {
const [name, setName] = useState('tom');
const userInfo = useMemo(() => {
  return {name, age: 20};
 },[]);
};
3.useCallback

useCallback是解决上面两个的不足的
优点: 可以缓存函数,(返回的是函数,每次都返回新的函数)
使用场景: 给子组件传递函数,将要传递的函数用useCallback包裹起来

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值