MCPcopy Create free account
hub / github.com/caseywebdev/react-list / reconcileChildrenIterator

Function reconcileChildrenIterator

docs/index.js:6677–6752  ·  view source on GitHub ↗
(
    returnFiber,
    currentFirstChild,
    newChildren,
    lanes
  )

Source from the content-addressed store, hash-verified

6675 return resultingFirstChild;
6676 }
6677 function reconcileChildrenIterator(
6678 returnFiber,
6679 currentFirstChild,
6680 newChildren,
6681 lanes
6682 ) {
6683 if (null == newChildren) throw Error(formatProdErrorMessage(151));
6684 for (
6685 var resultingFirstChild = null,
6686 previousNewFiber = null,
6687 oldFiber = currentFirstChild,
6688 newIdx = (currentFirstChild = 0),
6689 nextOldFiber = null,
6690 step = newChildren.next();
6691 null !== oldFiber && !step.done;
6692 newIdx++, step = newChildren.next()
6693 ) {
6694 oldFiber.index > newIdx
6695 ? ((nextOldFiber = oldFiber), (oldFiber = null))
6696 : (nextOldFiber = oldFiber.sibling);
6697 var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);
6698 if (null === newFiber) {
6699 null === oldFiber && (oldFiber = nextOldFiber);
6700 break;
6701 }
6702 shouldTrackSideEffects &&
6703 oldFiber &&
6704 null === newFiber.alternate &&
6705 deleteChild(returnFiber, oldFiber);
6706 currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);
6707 null === previousNewFiber
6708 ? (resultingFirstChild = newFiber)
6709 : (previousNewFiber.sibling = newFiber);
6710 previousNewFiber = newFiber;
6711 oldFiber = nextOldFiber;
6712 }
6713 if (step.done)
6714 return (
6715 deleteRemainingChildren(returnFiber, oldFiber),
6716 isHydrating && pushTreeFork(returnFiber, newIdx),
6717 resultingFirstChild
6718 );
6719 if (null === oldFiber) {
6720 for (; !step.done; newIdx++, step = newChildren.next())
6721 (step = createChild(returnFiber, step.value, lanes)),
6722 null !== step &&
6723 ((currentFirstChild = placeChild(step, currentFirstChild, newIdx)),
6724 null === previousNewFiber
6725 ? (resultingFirstChild = step)
6726 : (previousNewFiber.sibling = step),
6727 (previousNewFiber = step));
6728 isHydrating && pushTreeFork(returnFiber, newIdx);
6729 return resultingFirstChild;
6730 }
6731 for (
6732 oldFiber = mapRemainingChildren(oldFiber);
6733 !step.done;
6734 newIdx++, step = newChildren.next()

Callers 1

reconcileChildFibersImplFunction · 0.85

Calls 10

formatProdErrorMessageFunction · 0.85
updateSlotFunction · 0.85
deleteChildFunction · 0.85
placeChildFunction · 0.85
deleteRemainingChildrenFunction · 0.85
pushTreeForkFunction · 0.85
createChildFunction · 0.85
mapRemainingChildrenFunction · 0.85
updateFromMapFunction · 0.85
warnOnInvalidKeyFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…