该生命周期一般用于: 当父级组件传递给子组件的props发生改变时,子组件要做一些事情。在该生命周期中可以根据参数中的nextProps判断与当前的props是否不同,是的话可以进行setstate。
外层父级setstate会触发子组件的componentDidUpdate,如果这时子组件在componentWillReceiveProps中也setstate的话,也只会触发一次子组件的componentDidUpdate、shouldComponentUpdate、componentWillUpdate,
因为react的setstate是事务机制,是批量更新机制,并不会立马更新一个state,在同一个事务内state中同一属性后者会覆盖前者,只有在该事务结束后才会setstate。
static getDerivedStateFromProps(nextProps, PrevState)该生命后期会在组件初始化时执行(也就是进入到componentdidmount这个过程中),在组件更新时也会执行,在初始时也就是进入到componentdidmount这个过程中,PrevState指的是初始化时的state也就是
constructor(){}函数中的最原始的state。在更新流程中,如果是父组件props改变触发的该生命周期,那么该PrevState还是该组件中当前的state,如果是子组件自身通过setstate触发的自身的该生命周期的话,那么该PrevState是nextState也就是setstate中要设置的那个state,就是说此时传入到该生命周期中的PrevState已经不是之前的了,是已经更新过的state了。getDerivedStateFromProps可以配合redux的mapstatetopprops使用,初始化的时候(也就是组件首次加载进入componentdidmount的过程)该生命周期中是可以拿到通过mapstatetopprops函数传递到组件上的props的,也就是说该生命周期不仅能拿到组件人为写的props,也能拿到redux中mapstatetopprops函数将state映射到组件上的props
https://www.jianshu.com/p/b331d0e4b398
https://www.cnblogs.com/danceonbeat/p/6993674.html
https://blog.csdn.net/weixin_34007886/article/details/87997179
https://juejin.im/post/5cf0e961f265da1b8e7085e6 掘金的
https://segmentfault.com/a/1190000021183529