React Hooks-useMemo篇

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React Hooks-useMemo篇相关的知识,希望对你有一定的参考价值。

参考技术A 我们在使用hooks和函数组件编写我们的组件时,第一个要考虑的就是渲染性能,我们知道如果在不做任何处理时,我们在函数组件中使用setState都会导致组件内部重新渲染,为了避免这种情况出现,我们一般都会使用useMemo将函数包裹。

下面我们通过一个实例,来理解下 useMemo的用法。

熟悉react的同学可以很显然的看出,当我们点击父组件的按钮的时候,子组件的name和children都会发生变化。

不管我们是改变name或者content的值,我们发现 changeName的方法都会被调用。

这就意味着我们本来只想修改content的值,但是由于name并没有发生变化,所以无需执行对应的changeName方法。

但是发现他却执行了。 这就意味着性能的损耗,做了无用功。

下面我们使用 useMemo 进行优化

useMemo 可以帮我们将变量缓存起来,它们的第二个参数和useEffect一样,是一个依赖项数组,通过配置依赖项数组来决定是否更新。

优化之后的子组件

这个时候我们点击 改变content值的按钮,发现changeName 并没有被调用。

但是点击改变name值按钮的时候,changeName被调用了。

所以我们可以使用useMemo方法 避免无用方法的调用,当然一般我们changName里面可能会使用useState来改变state的值,那就避免了组件的二次渲染,达到了优化性能的目的。

React使用hooks-useMemo

参考技术A 把“创建”函数和依赖项数组作为参数传入 useMemo ,它仅会在某个依赖项改变时才重新计算 memoized 值。这种优化有助于避免在每次渲染时都进行高开销的计算。
记住,传入 useMemo 的函数会在渲染期间执行。请不要在这个函数内部执行与渲染无关的操作,诸如副作用这类的操作属于 useEffect 的适用范畴,而不是 useMemo 。
如果没有提供依赖项数组, useMemo 在每次渲染时都会计算新的值。(react文档)

以上是关于React Hooks-useMemo篇的主要内容,如果未能解决你的问题,请参考以下文章

react 地图可视化 cesium 篇

学习react(基础篇)

react-native 学习之Image篇

react篇 绑定this 再也不担心this undefined辣

前端面试题整理—React篇

React 性能调优——PureComponent 篇