欢迎访问我的博客https://qqqww.com,祝码农同胞们早日走上人生巅峰,迎娶白富美~~~
1 前言
学习
React
,生命周期的各个组件是必须要学习的,对于事件触发的时机至关重要,也决定能不能写出高性能的组件,对于React的生命周期,我还需要更多的学习,多看文档,多写测试code
2 图解React生命周期
[图片上传失败...(image-8f683b-1549985866645)]
3 组件详解
看上图,React生命周期主要分为三个阶段:
- Mounting:初始化阶段
- Updating:重新渲染阶段
- umounting:销毁阶段
关于组件详解,详情请参照官网https://reactjs.org/
3.1 初始化阶段
getDefaultProps()
设置默认的
props
值,getDefaultProps()
方法被调用一次并缓存
getInitialState()
可直接在
constructor
中定义this.state
,只调用一次,可以访问this.props
componentWillMount()
将要装载,在
render
之前调用,且整个生命周期只调用一次,此时可修改this.state
,强调是在每一个组件render
之前立即调用
render()
初始化的关键环节,此时创建虚拟
DOM
,并进行diff
算法,重新渲染DOM
树,此时不能修改this.state
另外,关于虚拟
DOM
和diff
算法可以看我的另一篇文章虚拟DOM与Diff算法
componentDidMount()
还记得上面那个
componentWillMount()
将要装载吗?这里已经装载完成了,在render()
之后调用,并且强调是在所有的子组件都render
完之后才调用,常在这里建立定时器
3.2 重新渲染阶段
componentWillReceiveProps(newProps)
当组件需要接受新的
props
值时调用
shouldComponentUpdate(newProps, newState)
虚拟
DOM
的diff
算法很重要的环节,返回值是一个布尔值,进行diff
算法对比新旧两棵DOM
树的props
和state
是否相同,若相同,则返回false
,不需要更新,否则,更新
componentWillUpdate(newProps, newState)
在组件即将要更新
props
或state
但还没有render
时调用,此时可以修改this.state
render()
在重新渲染阶段的
render
根据更新的props
和state
值进行组件重新渲染
componentDidUpdate()
组件更新完成后调用,在
render
之后
3.3 销毁阶段
componentWillUnmount()
组件将要卸载调用,此时清除事件监听或者定时器或者一些不必要的变量等,防止内存泄漏
网友评论