React Fiber架构里render和commit阶段到底怎么分工的?
最近在看React源码,对Fiber架构有点懵。我知道更新分render和commit两个阶段,但具体哪些工作是在render阶段做、哪些留到commit阶段执行?比如useEffect和useLayoutEffect的回调是在哪个阶段调度的?
我试过在组件里加一些console.log,发现render阶段会多次执行(比如被高优先级任务打断后重来),但commit好像只走一次。那像DOM操作这种副作用,是不是必须等到commit阶段才安全?有没有什么原则可以判断某段逻辑该放在哪个阶段处理?
暂无解答