2022-1-14(React生命周期)

269 阅读1分钟

闭包产生的原因

函数中的局部变量在函数执行完后会被销毁,有时候,我们不希望这个局部变量会被销毁,我们还想在外部进行持续的操作和访问,我们就会用到闭包这种方式。

为什么不创建一个全局变量来代替这个局部变量?

因为全局变量会被污染或者被修改。

闭包能够访问里面的变量,是由于作用域链,用到了函数嵌套中,内部函数能够访问父级函数作用域的变量这个理念。

闭包能够造成内存泄漏

页面不关闭,变量就一直在,不能被垃圾回收机制回收或者手动清除。

闭包的应用场景

函数的柯里化。

ES5中模仿一个块级作用域,小范围的生成局部变量。

React生命周期

即更新后的生命周期为:

  1. 挂载阶段

    • constructor
    • static getDerivedStateFromProps
    • render
    • componentDidMount
  2. 更新阶段

    • static getDerivedStateFromProps
    • shouldComponentUpdate
    • render
    • getSnapshotBeforeUpdate
    • componentDidUpdate
  3. 卸载阶段

    • componentWillUnmount

image.png

总结:挂载阶段4,更新阶段5,卸载阶段1

React.memo()用法总结:

image.png

注:正常父子组件,当父组件状态改变的时候,即使传给子组件的props没有发生变化,但是子组件也会跟着重新渲染,为了让子组件只根据props的变化才重新渲染,即可用React.memo()将子组件包裹住。 React.memo会返回一个纯化(purified)的组件MemoFuncComponent

useEffect的理解:

image.png

注:即如果最后一个参数为空数组,return 则在组件销毁的时候执行。 如果最后一个参数数组有监听的值,则在此次更新完后,下次更新前执行(下次调useEffect前执行)