MCPcopy Create free account
hub / github.com/plotly/dash / updateDeferredValueImpl

Function updateDeferredValueImpl

dash/deps/react-dom@18.3.1.js:16469–16507  ·  view source on GitHub ↗
(hook, prevValue, value)

Source from the content-addressed store, hash-verified

16467 }
16468
16469 function updateDeferredValueImpl(hook, prevValue, value) {
16470 var shouldDeferValue = !includesOnlyNonUrgentLanes(renderLanes);
16471
16472 if (shouldDeferValue) {
16473 // This is an urgent update. If the value has changed, keep using the
16474 // previous value and spawn a deferred render to update it later.
16475 if (!objectIs(value, prevValue)) {
16476 // Schedule a deferred render
16477 var deferredLane = claimNextTransitionLane();
16478 currentlyRenderingFiber$1.lanes = mergeLanes(currentlyRenderingFiber$1.lanes, deferredLane);
16479 markSkippedUpdateLanes(deferredLane); // Set this to true to indicate that the rendered value is inconsistent
16480 // from the latest value. The name "baseState" doesn't really match how we
16481 // use it because we're reusing a state hook field instead of creating a
16482 // new one.
16483
16484 hook.baseState = true;
16485 } // Reuse the previous value
16486
16487
16488 return prevValue;
16489 } else {
16490 // This is not an urgent update, so we can use the latest value regardless
16491 // of what it is. No need to defer it.
16492 // However, if we're currently inside a spawned render, then we need to mark
16493 // this as an update to prevent the fiber from bailing out.
16494 //
16495 // `baseState` is true when the current value is different from the rendered
16496 // value. The name doesn't really match how we use it because we're reusing
16497 // a state hook field instead of creating a new one.
16498 if (hook.baseState) {
16499 // Flip this back to false.
16500 hook.baseState = false;
16501 markWorkInProgressReceivedUpdate();
16502 }
16503
16504 hook.memoizedState = value;
16505 return value;
16506 }
16507 }
16508
16509 function startTransition(setPending, callback, options) {
16510 var previousPriority = getCurrentUpdatePriority();

Callers 2

updateDeferredValueFunction · 0.70
rerenderDeferredValueFunction · 0.70

Calls 5

claimNextTransitionLaneFunction · 0.70
mergeLanesFunction · 0.70
markSkippedUpdateLanesFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…