闭包产生的原因
函数中的局部变量在函数执行完后会被销毁,有时候,我们不希望这个局部变量会被销毁,我们还想在外部进行持续的操作和访问,我们就会用到闭包这种方式。
为什么不创建一个全局变量来代替这个局部变量?
因为全局变量会被污染或者被修改。
闭包能够访问里面的变量,是由于作用域链,用到了函数嵌套中,内部函数能够访问父级函数作用域的变量这个理念。
闭包能够造成内存泄漏
页面不关闭,变量就一直在,不能被垃圾回收机制回收或者手动清除。
闭包的应用场景:
函数的柯里化。
ES5中模仿一个块级作用域,小范围的生成局部变量。
React生命周期
即更新后的生命周期为:
-
挂载阶段
constructorstatic getDerivedStateFromPropsrendercomponentDidMount
-
更新阶段
static getDerivedStateFromPropsshouldComponentUpdaterendergetSnapshotBeforeUpdatecomponentDidUpdate
-
卸载阶段
componentWillUnmount
总结:挂载阶段4,更新阶段5,卸载阶段1
React.memo()用法总结:
注:正常父子组件,当父组件状态改变的时候,即使传给子组件的props没有发生变化,但是子组件也会跟着重新渲染,为了让子组件只根据props的变化才重新渲染,即可用React.memo()将子组件包裹住。 React.memo会返回一个纯化(purified)的组件MemoFuncComponent
useEffect的理解:
注:即如果最后一个参数为空数组,return 则在组件销毁的时候执行。 如果最后一个参数数组有监听的值,则在此次更新完后,下次更新前执行(下次调useEffect前执行)