创建更新方式
ReactDom.render
1 | render( |
legacyRenderSubtreeIntoContainer
1 | function legacyRenderSubtreeIntoContainer( |
- 生成root
legacyCreateRootFromDOMContainer
1 | function legacyCreateRootFromDOMContainer( |
ReactRoot
1 | function ReactRoot( |
createContainer
1 | export function createContainer( |
createFiberRoot
1 | export function createFiberRoot( |
- 调用 root.render(children, callback);
1 | ReactRoot.prototype.render = function( |
updateContainer
1 | export function updateContainer( |
requestCurrentTime
1 | function requestCurrentTime() { |
recomputeCurrentRendererTime
1 | function recomputeCurrentRendererTime() { |
computeExpirationForFiber
1 | function computeExpirationForFiber(currentTime: ExpirationTime, fiber: Fiber) { |
updateContainerAtExpirationTime
1 | export function updateContainerAtExpirationTime( |
scheduleRootUpdate
1 | function scheduleRootUpdate( |
createUpdate
1 | export function createUpdate(expirationTime: ExpirationTime): Update<*> { |
enqueueUpdate
1 | export function enqueueUpdate<State>(fiber: Fiber, update: Update<State>) { |
createUpdateQueue
1 | export function createUpdateQueue<State>(baseState: State): UpdateQueue<State> { |
appendUpdateToQueue
1 | function appendUpdateToQueue<State>( |
setState
1 | Component.prototype.setState = function(partialState, callback) { |
enqueueSetState
1 | enqueueSetState(inst, payload, callback) { |
forceUpdate
1 | enqueueForceUpdate(inst, callback) { |
补充
什么是FiberRoot
- 整个应用的起点
- 包含应用挂载的目标节点
- 记录整个应用更新过程的各种信息
什么是Fiber
- 每一个ReactElement对应一个Fiber对象
- 记录节点的各种状态
- 串联整个应用形成树结构
什么是Update
- 用于记录组件状态的改变
- 存放于UpdateQueue中
- 多个Update可以同时存在