新增加的生命周期有:
1、getDerivedStateFromProps,用来控制props更新state的过程;
2、getSnapshotBeforeUpdate,用于读取最新的DOM数据,render之后执行,componentShouldUpdate之前执行,返回给componentShouldUpdate的三个参数;
3、componendDidCatch,捕获错误使用;
getDerivedStateFromProps(nextProps, prevState)用于替换componentWillReceiveProps,可以用来控制 props 更新 state 的过程;它返回一个对象表示新的 state;如果不需要更新,返回 null 即可;
在每次渲染之前都会调用,不管初始挂载还是后面的更新都会调用,这一点和componentWillReceiveProps(只有当父组件造成重新渲染时才调用)不同;
简单的理解就说从props中获取state,这个生命周期的功能实际上就是将传入的props映射到state上面;
getDerivedStateFromProps是一个静态函数,也就是这个函数不能通过this访问到class的属性,也并不推荐直接访问属性。而是应该通过参数提供的nextProps以及prevState来进行判断,根据新传入的props来映射到state
如果props传入的内容不需要影响到你的state,那么就需要返回一个null,这个返回值是必须的,所以尽量将其写到函数的末尾
static getDerivedStateFromProps(nextProps, prevState){
const {type} = nextProps;
if (type != prevState.type) {
return {
type,
}
} else {
return null;
}
}