Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 为什么要在react中添加getSnapshotBeforeUpdate_Reactjs_React Lifecycle - Fatal编程技术网

Reactjs 为什么要在react中添加getSnapshotBeforeUpdate

Reactjs 为什么要在react中添加getSnapshotBeforeUpdate,reactjs,react-lifecycle,Reactjs,React Lifecycle,我正在学习对生命周期方法做出反应,但却陷入了一个疑问,即使在网上进行了大量研究,也无法找到答案 根据react官方文档,据说getSnapshotBeforeUpdate方法用于在DOM提交之前执行某些操作。此函数返回的快照稍后将由componentDidUpdate使用 查询: 参数“prevProps”和“prevState”已经存在于方法componentDidUpdate中,那么为什么它需要函数getSnapshotBeforeUpdate的帮助呢?我的意思是函数componentDid

我正在学习对生命周期方法做出反应,但却陷入了一个疑问,即使在网上进行了大量研究,也无法找到答案

根据react官方文档,据说getSnapshotBeforeUpdate方法用于在DOM提交之前执行某些操作。此函数返回的快照稍后将由componentDidUpdate使用

查询: 参数“prevProps”和“prevState”已经存在于方法componentDidUpdate中,那么为什么它需要函数getSnapshotBeforeUpdate的帮助呢?我的意思是函数componentDidUpdate有必要的输入来执行getSnapshotBeforeUpdate所做的操作

任何帮助都将不胜感激

最好的,
Rahul

正如文档中通过示例明确提到的,
getSnapshotBeforeUpdate
方法的目的不仅仅是从
prevProps
和/或
prevState
获取信息

但它可以用于在更新DOM之前从以前的DOM中提取一些信息(例如div的当前滚动位置)。在大多数情况下,
prevProps
prevState
可能不包含与DOM相关的值

当您只考虑<代码>组件Debug Update <代码>方法时,DOM在被调用时已经更新了(因此,名称<强>确实/强> Update)。因此,到那时,与以前的DOM相关的所有信息都已丢失


因此,可以将从
getSnapshotBeforeUpdate
中提取的关于先前DOM的信息传递到
componentDidUpdate
方法,以便在那里使用它。

如文档中的示例所述,
getSnapshotBeforeUpdate
方法的目的不仅仅是从
prevProps
和/或
prevState
获取信息

但它可以用于在更新DOM之前从以前的DOM中提取一些信息(例如div的当前滚动位置)。在大多数情况下,
prevProps
prevState
可能不包含与DOM相关的值

当您只考虑<代码>组件Debug Update <代码>方法时,DOM在被调用时已经更新了(因此,名称<强>确实/强> Update)。因此,到那时,与以前的DOM相关的所有信息都已丢失


因此,可以将从
getSnapshotBeforeUpdate
中提取的有关以前DOM的信息传递给
componentDidUpdate
方法,以便在那里使用它。

感谢Udith提供的答案。当你说DOM时,是虚拟的DOM还是真实的DOM?据我所知,这是真实的DOM谢谢Udith的回答。当你说DOM时,它是虚拟的DOM还是真实的DOM?据我所知,它是真实的DOM