(hook, prevValue, value)
| 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(); |
no test coverage detected
searching dependent graphs…