为什么在反应中需要 getSnapshotBeforeUpdate

Why getSnapshotBeforeUpdate is nedded in react

我正在学习 React 生命周期方法,但在查询时卡住了,即使在网上进行了大量研究后也找不到答案。

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

查询: 参数'prevProps'和'prevState'已经存在于方法componentDidUpdate中,那为什么还需要函数getSnapshotBeforeUpdate的帮助呢?我的意思是函数 componentDidUpdate 有必要的输入来执行 getSnapshotBeforeUpdate 正在做的事情。

如有任何帮助,我们将不胜感激。

最好的, 拉胡尔

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

但是它可以用来在DOM更新之前从之前的DOM中提取一些信息(比如一个div的当前滚动位置)。大多数情况下,DOM 相关值可能不会被 prevPropsprevState 涵盖。

当您只考虑 componentDidUpdate 方法时,DOM 在被调用时已经更新(因此名称为 DidUpdate)。所以所有与之前DOM相关的信息到那个时候都丢失了。

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