React 生命周期
15版本
初始化阶段
getDefaultProps
作用
该阶段主要是定义初始化props
写法:
getDefaultProps(){
return {age:18}
}
getInitState
作用
该阶段主要是初始化State
写法:
getInitState(){
return {
age :18
}
}
小总结:这2个钩子也是15版本和16版本的区别之一
16版本
更新阶段
1.constructor
作用:
1.定义状态
2.给普通函数绑定this
3.通过super 继承 props
2.compentWillMount (组件即将被挂载)
作用:
初始化事件,和给生命周期做准备,类似于VUE的beforeCreate
17版本中会被弃用
3.render
作用
1.解析 this.state 和this.props
2.将Jsx型的vdom(虚拟DOM) 渲染成对象类型的vdom
3.reder 中不允许使用 this.setState (会死循环)
4.componDidMount
作用
1.数据请求,请求之后赋值给状态
2.第三方库实例化/DOM操作
更新阶段
1.componentWillReceiveProps
作用
1.用于接收新的属性值,判断组件身上的props是否改变
在未来的17版本中是会被弃用的
2.shouldComponentUpdate
作用
1.返回false或者true 来决定组件是否要进行渲染
2.接收新旧状态,用于对比一层数据(深对比的话需要手动去对比)
3.这个钩子函数是React组件性能优化的一个方式
3.componentWillUpdate
作用:
1.组件更新前的准备
这个组件在未来的17版本中也会被弃用
4.render
作用:
和初始化阶段的作用是一致的
5.componentDidUpdate
作用:
和conpontentWillMount 相似 发送请求 或者对真实DOM 进行操作
销毁阶段
1.componentWillUnMount(组件销毁)
作用
主要是组件销毁 和清除无用的实例和事件(onscroll )还有定时器之类的
错误处理阶段
1.componentDidCatch
作用:用于捕获子组件throw 的错误 显示回退UI
17版本(也是未来版本)
1.constructor
作用基本和之前的一样 下面只讲述一下不同的地方
2.static getDerviedFromProps 代替掉了componentWillMount
这是一个静态的方法 无法使用this 参数是(新属性和旧庄台)
实际作用:提供了一次修改数据的机会 返回出一个对象里面是修改的内容
语法内容:retun { }
3.render
4.componentDidMount
更新阶段
poprs或者state变化
1.static getDerviedStateFromProps
2.shouldcomponentUpdate
3.render
4.getSnaphotBeforeUpdate (快照)
这个也是17版本新增的 主要的作用是可以在这里面发送请求 然后把结果返回出去
在下一个钩子componentDidUpdate 中接收 是一个打工仔
5.componentDidUpdate