fat-cat

Concurrent Mode(React >= 18.x)

Concurrent Mode(以下简称 CM)翻译叫并发模式。CM 本身并不是一个功能,而是一个底层设计,它使 React 能够同时准备多个版本的 UI 在 CM 模式下,React 在执行过程中,每执行一个 Fiber,都会看看有没有更高优先级的更新,如果有,则当前低优先级的的更新会被暂停,待高优先级任务执行完之后,再继续执行或重新执行。

React 的渲染流程

综上:React 整体的渲染流程就是 render(reconcile 的过程) + commit(执行增删改 dom 和 effect、生命周期函数的执行、ref 的更新等)

// workLoop 同步执行
function renderRootSync(root, lanes) {
    do{
        try {
            workLoopSync();
            break;
        } catch (thrownValue) {
            handleError(root, thrownValue);
        }
    } while (true)
}

function workLoopSync) {
    while (workInProgress !== null) {
        performUnitOfWork(workInProgress);
    }
}

//
function renderRootConcurrent(root, lanes) {
    do{
        try {
            workLoopConcurrent();
            break;
        } catch (thrownValue) {
            handleError(root, thrownValue);
        }
    } while (true)
}

function workLoopConcurrent() {
    // Perform work until Scheduler asks us to yield
    while (workInProgress !== null && shouldYield()) {
        performUnitOfWork(workInProgress);
    }
}