react的生命周期
在react17版本后,react将会废弃三个生命钩子函数,新增两个钩子函数。
旧的生命周期函数图解
旧的生命周期钩子有3个在react17版本之后就会被废弃,只能在其前面加上UNSAFT_才能继续使用,否则react会出现警告。它们分别是:componetWillMount、componentWillUpdate、componetWillReceiveProps。
需要变成 UNSAFT_componetWillMount、UNSAFT_componentWillUpdate、UNSAFT_componetWillReceiveProps。
新的生命周期图解
新的生命周期钩子函数:
1、getDerivedStateFromProps()
接收的参数(prevProps,prevStates)
返回值:可以是 null 或者是 状态对象(state),如果返回的是状态,那么这个状态是固定的,是无法通过setState去改变的,会影响原有的状态。
使用场景:当state的值永远依赖于props的时候
2、getSnapshotBeforeUpdate()
接收的参数(prevProps,prevStates)
返回值:null 或者 快照(任何值),返回的值可以作为参数传递给 componentDidUpdate(prevProps,prevStates, 快照);
使用场景:可以在这个钩子函数内获取没更新之前的滚轮的位置,作为参数传递给组件更新完成函数。