前言
工作快要满两个月了,一直在使用React全家桶(React + React Redux + Router + Ant Design)。工作中涉及到React生命周期函数的使用非常多,在此做一个整理。
React的组件生命周期
在这里我想引用 React中文文档 中的原话:
每个组件都有几个 “生命周期方法” ,您可以重写这些方法,以在过程中的特定时间运行代码。 前缀为 will 的方法在一些事情发生之前被调用,而前缀为 did 的方法在一些事情发生后被调用。
这段话告诉我们三件事情:
- 生命周期方法我们可以自己改写。
- 前缀是 will 的方法在一些事情发生之前被调用。
- 前缀为 did 的方法在一些事情发生后被调用。
那组件的生命周期分为哪几个过程呢?共有三大过程:Mounting(装载),Updating(更新),Unmounting(卸载)
Mounting的意思就是一个组件实例被创建并将其插入 DOM 中;
Updating的意思就是刚刚完成Mounting的这个组件实例发生了变化,比如改变了 props 或 state;
Unmounting的意思就是这个组件从 DOM 中删除;
简而言之就是这三大过程,我去首次挂载这个组件,我去更新这个组件,我去卸载这个组件。
以下要介绍的组件的生命周期函数全都是围绕这三大过程。
组件的生命周期函数
当Mounting发生的时候
当组件挂载发生的时候,以下函数先后触发:
- constructor()
- componentWillMount()
- render()
- componentDidMount()
当Updating发生的时候
当组件更新发生的时候,以下函数先后触发:
- componentWillReceiveProps()
- shouldComponentUpdate()
- componentWillUpdate()
- render()
- componentDidUpdate()
当Unmounting发生的时候
当组件卸载发生的时候,这个函数触发:
- componentWillUnmount()
具体的函数参数和使用可以参考 React生命周期函数
总结
这些函数还是很有用的。
比如,在一个组件里要做一些后端数据请求,我们都是把请求放在componentDidMount()
中;自定义Form组件的时候,我们经常会用到componentWillReceiveProps()
。
当然这些是我个人的一些经验,就不展开说了。大家遇到类似需求的时候,别忘了这些好用的函数就好了。
补充
之后在读《深入React技术栈》这本书的时候,发现了一个描述React生命周期的很清晰的图,在这里贴一下:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。