我是React的新手。目前,我正在学习Hooks。我正在研究useEffect
挂钩。通常将其与生命周期方法(componentDidMount
,componentDidUpdate
和componentWillUnmount
等)进行比较。我的问题是关于这些功能的行为。生命周期方法是同步运行还是同步运行? useEffect
呢?
答案 0 :(得分:0)
与componentDidMount或componentDidUpdate不同,使用useEffect安排的效果不会阻止浏览器更新屏幕。这使您的应用程序感觉更灵敏。大多数效果不需要同步发生。在不常见的情况下(例如测量布局),会有一个单独的useLayoutEffect挂钩,其API与useEffect相同。您应该通过Documentation才能清楚查看。
答案 1 :(得分:0)
就useEffect而言,它是异步运行的,因此
您以某种方式导致渲染(更改状态,或父级重新渲染)
React渲染您的组件(称为它)
屏幕在视觉上得到了更新
在useEffect运行时
React还具有同步useEffect,即useLayoutEffect
您以某种方式导致渲染(更改状态,或父级重新渲染)
React渲染您的组件(称为它)
useLayoutEffect运行,React等待它完成。
屏幕在视觉上得到了更新
您可以阅读有关useLayoutEffect
的更多信息希望有帮助