current 和 workInProgress 分别在什么时候用

来源:8-6 hydrate-是否需要hydrate的判断

qq_月色里肆无忌惮的浅忆_0

2020-01-02

视频里面将在 beginWork 开始的时候所以的操作都是在 workInProgress 上执行,但是代码中有几处都是直接调用 current,比如 commitAllLifeCycles

if (effectTag & (Update | Callback)) {
      const current = nextEffect.alternate;
      commitLifeCycles(
        finishedRoot,
        current,
        nextEffect,
        committedExpirationTime,
      );
 }

completeUnitOfWork

const current = workInProgress.alternate;
    const returnFiber = workInProgress.return;
    const siblingFiber = workInProgress.sibling;

    if ((workInProgress.effectTag & Incomplete) === NoEffect) {
      // This fiber completed.
      // pop 各种 context 相关内容
      // 对 HostComponent 进行初始化(创建 instance,处理 props)
      // 初始化自定义监听事件
      nextUnitOfWork = completeWork(
        current,
        workInProgress,
        nextRenderExpirationTime,
      );
  }

请老师解答一下

写回答

1回答

Jokcy

2020-01-05

current是在正在需要更新dom的时候才会用到,其他时候基本上都是操作workInProgress

0
1
qq_月色里肆无忌惮的浅忆_0
非常感谢!
2020-01-06
共1条回复

React源码深度解析 高级前端工程师必备技能

掌握React源码,让你的开发水平没有上限,更不惧前端未来的到来

1749 学习 · 336 问题

查看课程