react教程,memo高阶函数的高级使用方法,有条件的更新
发布于 作者:苏南大叔 来源:程序如此灵动~

本文描述react
项目中的高阶函数memo
,前面的文章里面,苏南大叔对这个memo
已经做过简单的描述了,最基本的印象就是用于监控组件的props
的变化情况,如果props
没有变化,就不更新组件。这个组件可以是函数式组件,也可以是类式组件。

苏南大叔的程序如此灵动博客,记录苏南大叔的代码感想。本文描述react
高阶组件memo
的高级使用方式:有条件的允许更新。测试环境:create-react-app@5.0.1
,react@18.2.0
,react-dom@18.2.0
,node@16.14.2
。
前置内容
本文的前置内容是下面的这篇文章:
本文的例子,和上文的例子非常类似。但是,本文中使用类式组件【以及函数式组件】来做子组件的例子,然后使用高阶函数memo
来做这个有条件的缓存。

父组件

函数式组件memo

类式组件memo

执行效果
本文执行效果如下:
父组件中,有两个按钮,第一个按钮总是会引起子组件更新。第二个按钮在计数到5之前会引起两个子组件的更新。

第二个参数 对比 shouldComponentUpdate
memo
的第二个参数是个回调函数:
这个看起来和shouldComponentUpdate
很类似,可以回顾一下shouldComponentUpdate
的用法:

可见两者区别是:
函数 | 辨别标准 | return true | return false |
---|---|---|---|
memo(,(prev, next)=>{}) | 前后props | 不允许更新 | 允许更新 |
shouldComponentUpdate(nextProps, nextState) | 下一个props 和state | 允许更新 | 不允许更新 |
总结
memo
虽然客观上是要保持缓存组件的,但是组件的缓存条件也可以是有条件的。特别需要注意的是:这里的true
和false
表达的意思,和shouldComponentUpdate()
是相反的!!!
更多react
经验文章,请点击苏南大叔的博客:


