MCPcopy Create free account
hub / github.com/reactjs/react-rails / processUpdateQueue

Function processUpdateQueue

lib/assets/react-source/development/react.js:16017–16176  ·  view source on GitHub ↗
(workInProgress, props, instance, renderExpirationTime)

Source from the content-addressed store, hash-verified

16015 }
16016
16017 function processUpdateQueue(workInProgress, props, instance, renderExpirationTime) {
16018 // This is always non-null on a ClassComponent or HostRoot
16019 var queue = workInProgress.updateQueue;
16020 hasForceUpdate = false;
16021
16022 {
16023 currentlyProcessingQueue = queue.shared;
16024 } // The last rebase update that is NOT part of the base state.
16025
16026
16027 var baseQueue = queue.baseQueue; // The last pending update that hasn't been processed yet.
16028
16029 var pendingQueue = queue.shared.pending;
16030
16031 if (pendingQueue !== null) {
16032 // We have new updates that haven't been processed yet.
16033 // We'll add them to the base queue.
16034 if (baseQueue !== null) {
16035 // Merge the pending queue and the base queue.
16036 var baseFirst = baseQueue.next;
16037 var pendingFirst = pendingQueue.next;
16038 baseQueue.next = pendingFirst;
16039 pendingQueue.next = baseFirst;
16040 }
16041
16042 baseQueue = pendingQueue;
16043 queue.shared.pending = null; // TODO: Pass `current` as argument
16044
16045 var current = workInProgress.alternate;
16046
16047 if (current !== null) {
16048 var currentQueue = current.updateQueue;
16049
16050 if (currentQueue !== null) {
16051 currentQueue.baseQueue = pendingQueue;
16052 }
16053 }
16054 } // These values may change as we process the queue.
16055
16056
16057 if (baseQueue !== null) {
16058 var first = baseQueue.next; // Iterate through the list of updates to compute the result.
16059
16060 var newState = queue.baseState;
16061 var newExpirationTime = NoWork;
16062 var newBaseState = null;
16063 var newBaseQueueFirst = null;
16064 var newBaseQueueLast = null;
16065
16066 if (first !== null) {
16067 var update = first;
16068
16069 do {
16070 var updateExpirationTime = update.expirationTime;
16071
16072 if (updateExpirationTime < renderExpirationTime) {
16073 // Priority is insufficient. Skip this update. If this is the first
16074 // skipped update, the previous update/state is the new base

Callers 4

mountClassInstanceFunction · 0.85
resumeMountClassInstanceFunction · 0.85
updateClassInstanceFunction · 0.85
updateHostRootFunction · 0.85

Calls 3

getStateFromUpdateFunction · 0.85

Tested by

no test coverage detected