react总结随笔(一)

270 阅读2分钟

学习react这么久,笔者一直用小本本记录着学习过程,不知不觉都快2万字了。 ``

image.png image.png
没想到叭,笔者直接就用vscode写的。🤦‍
准备将这些文字逐步记录到掘金上,也便于以后回顾。😄

react hooks中的性能优化

react性能优化思路
1.减少重新render的次数,因为在react中最重(花时间最长)的一块就是reconction
(可简单的理解为diff),如果不render,就不会reconction。
2.减少计算的量。主要减少重复计算。

React.memo
高阶组件,对标类组件中的PureComponent,可以减少render次数。
使用方式:包裹声明的组件。这样在props不变的情况下,被包裹的组件不会重新渲染的,
但是只会进行浅层对比。

useMemo
useMemo能形成独立的渲染空间,能够使组件、变量按照约定好规则更新。渲染条件依赖于
第二个参数deps。我们知道无状态组件的更新时从头到尾的更新,如果你想要从新渲染一
部分视图,而不是整个组件,那么用useMemo是最佳方案,避免了不需要的更新,和不必要
的上下文的执行。memo是无状态组件的ShouldUpdate,而useMemo就是更为细小的
ShouldUpdate单元。
useMemo的应用理念和memo差不多,都是判定是否满足当前的限定条件来决定是否执行
useMemo的callback函数,而useMemo的第二个参数是一个deps数组,数组里参数变化决
定了useMemo是否更新回调函数,useMemo返回值就是经过判定更新的结果。它可以应用在
元素上,应用在组件上,也可以应用在上下文当中。如果是一个循环的list元素,那么
useMemo会是一个不二选择。

useCallback
useMemo版本的回调函数
 useMemo和useCallback接受的参数都是一样的,都是在其依赖项发生变化后才执行,都
 是返回缓存的值。区别在于useMemo返回的是函数运行的结果,useCallback返回的是函
 数,这个回调函数是经过处理后的。
 也就是说,父组件传递一个函数给子组件的时候,由于是无状态组件每一次都会重新生成
 新的props函数,这样就使得每一次传递给子组件的函数都发生了变化,这时候就会触发
 子组件的更新,这些更新是没有必要的,此时我们就可以通过useCallback来处理函数,
 然后作为props传递给子组件。

未完待续


记录记录!