in Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js [5156:5481]
function completeWork(current, workInProgress, renderLanes) {
var newProps = workInProgress.pendingProps;
switch (workInProgress.tag) {
case 2:
case 16:
case 15:
case 0:
case 11:
case 7:
case 8:
case 12:
case 9:
case 14:
return bubbleProperties(workInProgress), null;
case 1:
return (
isContextProvider(workInProgress.type) && popContext(),
bubbleProperties(workInProgress),
null
);
case 3:
return (
(newProps = workInProgress.stateNode),
popHostContainer(),
pop(didPerformWorkStackCursor),
pop(contextStackCursor),
resetWorkInProgressVersions(),
newProps.pendingContext &&
((newProps.context = newProps.pendingContext),
(newProps.pendingContext = null)),
(null !== current && null !== current.child) ||
newProps.hydrate ||
(workInProgress.flags |= 512),
updateHostContainer(current, workInProgress),
bubbleProperties(workInProgress),
null
);
case 5:
popHostContext(workInProgress);
renderLanes = requiredContext(rootInstanceStackCursor.current);
var type = workInProgress.type;
if (null !== current && null != workInProgress.stateNode)
updateHostComponent$1(
current,
workInProgress,
type,
newProps,
renderLanes
),
current.ref !== workInProgress.ref && (workInProgress.flags |= 256);
else {
if (!newProps) {
if (null === workInProgress.stateNode)
throw Error(
"We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue."
);
bubbleProperties(workInProgress);
return null;
}
requiredContext(contextStackCursor$1.current);
current = allocateTag();
type = getViewConfigForType(type);
var updatePayload = diffProperties(
null,
emptyObject,
newProps,
type.validAttributes
);
ReactNativePrivateInterface.UIManager.createView(
current,
type.uiViewClassName,
renderLanes,
updatePayload
);
renderLanes = new ReactNativeFiberHostComponent(
current,
type,
workInProgress
);
instanceCache.set(current, workInProgress);
instanceProps.set(current, newProps);
appendAllChildren(renderLanes, workInProgress, !1, !1);
workInProgress.stateNode = renderLanes;
finalizeInitialChildren(renderLanes) && (workInProgress.flags |= 4);
null !== workInProgress.ref && (workInProgress.flags |= 256);
}
bubbleProperties(workInProgress);
return null;
case 6:
if (current && null != workInProgress.stateNode)
updateHostText$1(
current,
workInProgress,
current.memoizedProps,
newProps
);
else {
if ("string" !== typeof newProps && null === workInProgress.stateNode)
throw Error(
"We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue."
);
current = requiredContext(rootInstanceStackCursor.current);
if (!requiredContext(contextStackCursor$1.current).isInAParentText)
throw Error(
"Text strings must be rendered within a <Text> component."
);
renderLanes = allocateTag();
ReactNativePrivateInterface.UIManager.createView(
renderLanes,
"RCTRawText",
current,
{ text: newProps }
);
instanceCache.set(renderLanes, workInProgress);
workInProgress.stateNode = renderLanes;
}
bubbleProperties(workInProgress);
return null;
case 13:
pop(suspenseStackCursor);
newProps = workInProgress.memoizedState;
if (0 !== (workInProgress.flags & 128))
return (
(workInProgress.lanes = renderLanes),
0 !== (workInProgress.mode & 2) &&
transferActualDuration(workInProgress),
workInProgress
);
newProps = null !== newProps;
renderLanes = !1;
null !== current && (renderLanes = null !== current.memoizedState);
if (newProps && !renderLanes && 0 !== (workInProgress.mode & 1))
if (
(null === current &&
!0 !== workInProgress.memoizedProps.unstable_avoidThisFallback) ||
0 !== (suspenseStackCursor.current & 1)
)
0 === workInProgressRootExitStatus &&
(workInProgressRootExitStatus = 3);
else {
if (
0 === workInProgressRootExitStatus ||
3 === workInProgressRootExitStatus
)
workInProgressRootExitStatus = 4;
null === workInProgressRoot ||
(0 === (workInProgressRootSkippedLanes & 268435455) &&
0 === (workInProgressRootUpdatedLanes & 268435455)) ||
markRootSuspended$1(
workInProgressRoot,
workInProgressRootRenderLanes
);
}
if (newProps || renderLanes) workInProgress.flags |= 4;
bubbleProperties(workInProgress);
0 !== (workInProgress.mode & 2) &&
newProps &&
((current = workInProgress.child),
null !== current &&
(workInProgress.treeBaseDuration -= current.treeBaseDuration));
return null;
case 4:
return (
popHostContainer(),
updateHostContainer(current, workInProgress),
bubbleProperties(workInProgress),
null
);
case 10:
return (
popProvider(workInProgress.type._context),
bubbleProperties(workInProgress),
null
);
case 17:
return (
isContextProvider(workInProgress.type) && popContext(),
bubbleProperties(workInProgress),
null
);
case 19:
pop(suspenseStackCursor);
type = workInProgress.memoizedState;
if (null === type) return bubbleProperties(workInProgress), null;
newProps = 0 !== (workInProgress.flags & 128);
updatePayload = type.rendering;
if (null === updatePayload)
if (newProps) cutOffTailIfNeeded(type, !1);
else {
if (
0 !== workInProgressRootExitStatus ||
(null !== current && 0 !== (current.flags & 128))
)
for (current = workInProgress.child; null !== current; ) {
updatePayload = findFirstSuspended(current);
if (null !== updatePayload) {
workInProgress.flags |= 128;
cutOffTailIfNeeded(type, !1);
current = updatePayload.updateQueue;
null !== current &&
((workInProgress.updateQueue = current),
(workInProgress.flags |= 4));
workInProgress.subtreeFlags = 0;
current = renderLanes;
for (newProps = workInProgress.child; null !== newProps; )
(renderLanes = newProps),
(updatePayload = current),
(renderLanes.flags &= 1835010),
(type = renderLanes.alternate),
null === type
? ((renderLanes.childLanes = 0),
(renderLanes.lanes = updatePayload),
(renderLanes.child = null),
(renderLanes.subtreeFlags = 0),
(renderLanes.memoizedProps = null),
(renderLanes.memoizedState = null),
(renderLanes.updateQueue = null),
(renderLanes.dependencies = null),
(renderLanes.stateNode = null),
(renderLanes.selfBaseDuration = 0),
(renderLanes.treeBaseDuration = 0))
: ((renderLanes.childLanes = type.childLanes),
(renderLanes.lanes = type.lanes),
(renderLanes.child = type.child),
(renderLanes.subtreeFlags = 0),
(renderLanes.deletions = null),
(renderLanes.memoizedProps = type.memoizedProps),
(renderLanes.memoizedState = type.memoizedState),
(renderLanes.updateQueue = type.updateQueue),
(renderLanes.type = type.type),
(updatePayload = type.dependencies),
(renderLanes.dependencies =
null === updatePayload
? null
: {
lanes: updatePayload.lanes,
firstContext: updatePayload.firstContext
}),
(renderLanes.selfBaseDuration = type.selfBaseDuration),
(renderLanes.treeBaseDuration = type.treeBaseDuration)),
(newProps = newProps.sibling);
push(
suspenseStackCursor,
(suspenseStackCursor.current & 1) | 2
);
return workInProgress.child;
}
current = current.sibling;
}
null !== type.tail &&
now() > workInProgressRootRenderTargetTime &&
((workInProgress.flags |= 128),
(newProps = !0),
cutOffTailIfNeeded(type, !1),
(workInProgress.lanes = 4194304));
}
else {
if (!newProps)
if (
((current = findFirstSuspended(updatePayload)), null !== current)
) {
if (
((workInProgress.flags |= 128),
(newProps = !0),
(current = current.updateQueue),
null !== current &&
((workInProgress.updateQueue = current),
(workInProgress.flags |= 4)),
cutOffTailIfNeeded(type, !0),
null === type.tail &&
"hidden" === type.tailMode &&
!updatePayload.alternate)
)
return bubbleProperties(workInProgress), null;
} else
2 * now() - type.renderingStartTime >
workInProgressRootRenderTargetTime &&
1073741824 !== renderLanes &&
((workInProgress.flags |= 128),
(newProps = !0),
cutOffTailIfNeeded(type, !1),
(workInProgress.lanes = 4194304));
type.isBackwards
? ((updatePayload.sibling = workInProgress.child),
(workInProgress.child = updatePayload))
: ((current = type.last),
null !== current
? (current.sibling = updatePayload)
: (workInProgress.child = updatePayload),
(type.last = updatePayload));
}
if (null !== type.tail)
return (
(workInProgress = type.tail),
(type.rendering = workInProgress),
(type.tail = workInProgress.sibling),
(type.renderingStartTime = now()),
(workInProgress.sibling = null),
(current = suspenseStackCursor.current),
push(suspenseStackCursor, newProps ? (current & 1) | 2 : current & 1),
workInProgress
);
bubbleProperties(workInProgress);
return null;
case 22:
case 23:
return (
popRenderLanes(),
(renderLanes = null !== workInProgress.memoizedState),
null !== current &&
(null !== current.memoizedState) !== renderLanes &&
"unstable-defer-without-hiding" !== newProps.mode &&
(workInProgress.flags |= 4),
(renderLanes &&
0 === (subtreeRenderLanes & 1073741824) &&
0 !== (workInProgress.mode & 1)) ||
bubbleProperties(workInProgress),
null
);
}
throw Error(
"Unknown unit of work tag (" +
workInProgress.tag +
"). This error is likely caused by a bug in React. Please file an issue."
);
}