react新增生命周期

64 阅读1分钟

新增加的生命周期有:

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;
    }
}