Skip to content

Commit

Permalink
Sync old fork
Browse files Browse the repository at this point in the history
  • Loading branch information
sebmarkbage committed Oct 18, 2021
1 parent aaaf984 commit 593e5d1
Showing 1 changed file with 68 additions and 12 deletions.
80 changes: 68 additions & 12 deletions packages/react-reconciler/src/ReactFiberHydrationContext.old.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,18 +38,24 @@ import {
canHydrateSuspenseInstance,
getNextHydratableSibling,
getFirstHydratableChild,
getFirstHydratableChildWithinContainer,
getFirstHydratableChildWithinSuspenseInstance,
hydrateInstance,
hydrateTextInstance,
hydrateSuspenseInstance,
getNextHydratableInstanceAfterSuspenseInstance,
shouldDeleteUnhydratedTailInstances,
didNotMatchHydratedContainerTextInstance,
didNotMatchHydratedTextInstance,
didNotHydrateContainerInstance,
didNotHydrateInstanceWithinContainer,
didNotHydrateInstanceWithinSuspenseInstance,
didNotHydrateInstance,
didNotFindHydratableContainerInstance,
didNotFindHydratableContainerTextInstance,
didNotFindHydratableContainerSuspenseInstance,
didNotFindHydratableInstanceWithinContainer,
didNotFindHydratableTextInstanceWithinContainer,
didNotFindHydratableSuspenseInstanceWithinContainer,
didNotFindHydratableInstanceWithinSuspenseInstance,
didNotFindHydratableTextInstanceWithinSuspenseInstance,
didNotFindHydratableSuspenseInstanceWithinSuspenseInstance,
didNotFindHydratableInstance,
didNotFindHydratableTextInstance,
didNotFindHydratableSuspenseInstance,
Expand Down Expand Up @@ -78,8 +84,10 @@ function enterHydrationState(fiber: Fiber): boolean {
return false;
}

const parentInstance = fiber.stateNode.containerInfo;
nextHydratableInstance = getFirstHydratableChild(parentInstance);
const parentInstance: Container = fiber.stateNode.containerInfo;
nextHydratableInstance = getFirstHydratableChildWithinContainer(
parentInstance,
);
hydrationParentFiber = fiber;
isHydrating = true;
return true;
Expand All @@ -92,8 +100,10 @@ function reenterHydrationStateFromDehydratedSuspenseInstance(
if (!supportsHydration) {
return false;
}
nextHydratableInstance = getNextHydratableSibling(suspenseInstance);
popToNextHostParent(fiber);
nextHydratableInstance = getFirstHydratableChildWithinSuspenseInstance(
suspenseInstance,
);
hydrationParentFiber = fiber;
isHydrating = true;
return true;
}
Expand All @@ -105,7 +115,7 @@ function deleteHydratableInstance(
if (__DEV__) {
switch (returnFiber.tag) {
case HostRoot:
didNotHydrateContainerInstance(
didNotHydrateInstanceWithinContainer(
returnFiber.stateNode.containerInfo,
instance,
);
Expand All @@ -118,6 +128,14 @@ function deleteHydratableInstance(
instance,
);
break;
case SuspenseComponent:
const suspenseState: SuspenseState = returnFiber.memoizedState;
if (suspenseState.dehydrated !== null)
didNotHydrateInstanceWithinSuspenseInstance(
suspenseState.dehydrated,
instance,
);
break;
}
}

Expand All @@ -144,14 +162,23 @@ function insertNonHydratedInstance(returnFiber: Fiber, fiber: Fiber) {
case HostComponent:
const type = fiber.type;
const props = fiber.pendingProps;
didNotFindHydratableContainerInstance(parentContainer, type, props);
didNotFindHydratableInstanceWithinContainer(
parentContainer,
type,
props,
);
break;
case HostText:
const text = fiber.pendingProps;
didNotFindHydratableContainerTextInstance(parentContainer, text);
didNotFindHydratableTextInstanceWithinContainer(
parentContainer,
text,
);
break;
case SuspenseComponent:
didNotFindHydratableContainerSuspenseInstance(parentContainer);
didNotFindHydratableSuspenseInstanceWithinContainer(
parentContainer,
);
break;
}
break;
Expand Down Expand Up @@ -191,6 +218,35 @@ function insertNonHydratedInstance(returnFiber: Fiber, fiber: Fiber) {
}
break;
}
case SuspenseComponent: {
const suspenseState: SuspenseState = returnFiber.memoizedState;
const parentInstance = suspenseState.dehydrated;
if (parentInstance !== null)
switch (fiber.tag) {
case HostComponent:
const type = fiber.type;
const props = fiber.pendingProps;
didNotFindHydratableInstanceWithinSuspenseInstance(
parentInstance,
type,
props,
);
break;
case HostText:
const text = fiber.pendingProps;
didNotFindHydratableTextInstanceWithinSuspenseInstance(
parentInstance,
text,
);
break;
case SuspenseComponent:
didNotFindHydratableSuspenseInstanceWithinSuspenseInstance(
parentInstance,
);
break;
}
break;
}
default:
return;
}
Expand Down

0 comments on commit 593e5d1

Please sign in to comment.