【发布时间】:2020-08-21 10:16:10
【问题描述】:
我们如何在类组件中模仿useLayoutEffect() 的功能?
假设我们的功能组件是
function MyFuncComponent() {
useLayoutEffect(() => {
runSideEffect();
});
}
假设这个特殊的副作用不需要清理,下面的代码是否等效?
class MyClassComponent extends React.Component {
componentDidMount() {
runSideEffect();
}
componentDidUpdate() {
runSideEffect();
}
}
从文档看来,它们并不完全相同,因为多个预定的 useLayoutEffect()s 在连续渲染之间被刷新,但 componentDidUpdate()s 不是。这种理解是否正确,如果正确,我们如何模仿useLayoutEffect()?
在 useLayoutEffect 中安排的更新将在浏览器有机会绘制之前同步刷新。
【问题讨论】:
-
尝试 getSnapshotBeforeUpdate。它应该可以工作。
标签: reactjs react-hooks