React组件的生命周期

# 组件的生命周期

## 旧版组件的生命周期 < 16.0.0

1. constructor

 1.同一个组件只会创建一次。

 2.不能在第一次挂载到页面之前,调用setState,为了避免bug,构造函数中严禁使用setState

2.componentWillMountcomponentWillMount() 

 1.正常情况下,和构造函数一样自会运行一次。

 2.可以使用setState,但是为了避免bug,不允许使用,因为在某些特殊情况下,该函数可能被调用多次。

3. **render**

 1.返回一个虚拟dom。会被挂载到react的虚拟dom树上,最终渲染到页面上。

 2.render会被运行多次,只要需要渲染,就会运行

 3.严禁使用直接使用setState,可能会导致虚拟无限递归

4.**componentDidMount** componentDidMount()

 1.只会执行一次

 2.可以使用setState

 3.通常情况下,会将网络请求,启动计时器等一开始需要的操作,书写到该函数

5.组将进入到活跃状态

6.componentWillReceiveProps  componentWillReceiveProps (nextProps)

 1.即将接收新的属性值

 2.参数为新的属性对象

 3.该函数可能会导致一些bug,所以不推荐使用

7.**shouldComponentUpdate**  shouldComponentUpdate(nextProps,nextState) 

 1.指示React是否要重新渲染该组件,返回true和false来指定

 2.默认情况下会返回true

8.componentWillUpdate  componentWillUpdate (nextProps,nextState)

 1.组件即将被渲染

9.componentDidUpdate  componentDidUpdate(prevProps,prevState)

 1.往往该组件中使用dom操作,改变元素。

10.**componentWillUnmount**  componentWillUnmount() 

 1.通常在该函数中销毁一些组件依赖的一些资源,比如计时器。

 

## 新版版组件的生命周期 >=16.0.0

React官方认为,某个数据的来源必须单一所以删除了有可能导致bug的componentWillMount,componentWillReceiveProps,componentWillUpdate

 

新增加了:

1.getDerivedStateFromProps

 1.通过参数获取新的属性和状态

 2.该函数时静态函数

 3.该函数的返回值会覆盖掉组件的状态

 4.该函数几乎不会使用到

2.getSnapshowBeforeUpdate

 1.真实的dom已经构建完成,但未实际渲染到页面中去

 2.在该函数中,通常用于实现一些附加的dom操做

 3.该函数的返回值会作为componentDidUpdate的第三个参数

 

posted @ 2020-12-17 09:44  漫漫长路上的求知者  阅读(71)  评论(0编辑  收藏  举报