![c0c59ecfb076b299325077c024449baa.png](https://img-blog.csdnimg.cn/img_convert/c0c59ecfb076b299325077c024449baa.png)
React新版本生命周期
![06a2c2c000ffe29c9b47436c501173be.png](https://img-blog.csdnimg.cn/img_convert/06a2c2c000ffe29c9b47436c501173be.png)
新增生命周期
static getDerivedStateFromProps(prevProps, prevState) 在每次渲染之前都会调用,不管造成重新渲染的原因,不管初始挂载还是后面的更新都会调用,这一点和componentWillReceiveProps不同(只有当父组件造成重新渲染时才调用),每次都应该返回一个对象作为state的更新,或者返回null表示不更新
它的使用场景一般为依赖于props的变化去做一些状态的更新,让我们能够根据props的变化去更新内部的状态,以前我们经常在componentWillReceiveProps中完成该操作,但是你需要考虑的是是否有必要使用这个生命周期getDerivedStateFromProps内部不可以有副作用,因为现在是无论是state改变还是props改变,都会执行它。
- getSnapshotBeforeUpdate(prevProps, prevState)
在最新的渲染数据提交给DOM前会立即调用,它让你在组件的数据可能要改变之前获取他们,他的返回值会被传递给componentDidUpdate的第三个参数。
- componendDidCatch(error, info)
如果一个组件定义了componentDidCatch生命周期,则他将成为一个错误边界(错误边界会捕捉渲染期间、在生命周期方法中和在它们之下整棵树的构造函数中的错误,就像使用了try catch,不会将错误直接抛出了,保证应用的可用性)
Refs and the DOM
当在你的app中获取dom时,例如在一些组件,你需要获取到当前dom对象,并进行相应的操作(代替暴露open()和close()方法在一个对话框组件,通过isOpen属性)。
class MyComponent extends R