react教程,类组件生命周期getSnapshotBeforeUpdate
发布于 作者:苏南大叔 来源:程序如此灵动~

本文来说说另外一个不咋常用的新生命周期函数getSnapshotBeforeUpdate()
。经过苏南大叔的测试,这个函数发生在render
之后,真正的ui
变动之前,然后发生的就是DidUpdate
。用于在UI
也就是页面元素发生变化之前获得一个Snapshot
快照。听起来也是个没啥用的函数,使用的概率不高。

大家好,这里是苏南大叔的程序如此灵动博客,这里记录苏南大叔和计算机代码的故事。本文描述新的react
生命周期函数getSnapshotBeforeUpdate()
。测试环境:create-react-app@5.0.1
,react@18.2.0
,react-dom@18.2.0
,node@16.14.2
。
测试代码
这个getSnapshotBeforeUpdate()
发生在组件更新的阶段,相关的shouldComponentUpdate(nextProps, nextState)
需要返回为true
,或者根本别定义shouldComponentUpdate()
。
直接放代码:

参数传递
getSnapshotBeforeUpdate
一般是要配合componentDidUpdate
使用的。
核心代码是:
从getSnapshotBeforeUpdate
中return
一个快照值,到componentDidUpdate
中的第三个参数。

执行顺序位置
根据测试,该生命周期的执行顺序位置是:
这里得出的结论是:
- 在
render
的时候仅仅是形成了字符串,并没有真的更新UI。所以,getSnapshotBeforeUpdate()
才能获得更新前的快照。 - 至于快照的返回值是啥,或者根本就没有(
return null
),这个就是个人自己定义的。只是在更新前,可以访问到对应的UI界面而已,想获得啥内容就直接返回啥内容。
参数及返回值
看看这个表格,首先需要强调的是:getDerivedStateFromProps
发生在getSnapshotBeforeUpdate
之前。
周期 | props | state | 返回值 | 执行位置 |
---|---|---|---|---|
getDerivedStateFromProps | nextProps | prevState | 新的状态值 | 第一个被执行 |
getSnapshotBeforeUpdate | prevProps | prevState | 从更新前的UI上得出的某个快照值 | UI真正变化之前 |
结束语
更多react
相关经验文章,请点击苏南大叔的博客文章:


