mirror of
https://github.com/zebrajr/react.git
synced 2025-12-06 12:20:20 +01:00
* Basic partial hydration test * Render comments around Suspense components We need this to be able to identify how far to skip ahead if we're not going to hydrate this subtree yet. * Add DehydratedSuspenseComponent type of work Will be used for Suspense boundaries that are left with their server rendered content intact. * Add comment node as hydratable instance type as placeholder for suspense * Skip past nodes within the Suspense boundary This lets us continue hydrating sibling nodes. * A dehydrated suspense boundary comment should be considered a sibling * Retry hydrating at offscreen pri or after ping if suspended * Enter hydration state when retrying dehydrated suspense boundary * Delete all children within a dehydrated suspense boundary when it's deleted * Delete server rendered content when props change before hydration completes * Make test internal * Wrap in act * Change SSR Fixture to use Partial Hydration This requires the enableSuspenseServerRenderer flag to be manually enabled for the build to work. * Changes to any parent Context forces clearing dehydrated content We mark dehydrated boundaries as having child work, since they might have components that read from the changed context. We check this in beginWork and if it does we treat it as if the input has changed (same as if props changes). * Wrap in feature flag * Treat Suspense boundaries without fallbacks as if not-boundaries These don't come into play for purposes of hydration. * Fix clearing of nested suspense boundaries * ping -> retry Co-Authored-By: sebmarkbage <sebastian@calyptus.eu> * Typo Co-Authored-By: sebmarkbage <sebastian@calyptus.eu> * Use didReceiveUpdate instead of manually comparing props * Leave comment for why it's ok to ignore the timeout
47 lines
1.6 KiB
JavaScript
47 lines
1.6 KiB
JavaScript
/**
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
* @flow
|
|
*/
|
|
|
|
import invariant from 'shared/invariant';
|
|
|
|
// Renderers that don't support hydration
|
|
// can re-export everything from this module.
|
|
|
|
function shim(...args: any) {
|
|
invariant(
|
|
false,
|
|
'The current renderer does not support hydration. ' +
|
|
'This error is likely caused by a bug in React. ' +
|
|
'Please file an issue.',
|
|
);
|
|
}
|
|
|
|
// Hydration (when unsupported)
|
|
export type SuspenseInstance = mixed;
|
|
export const supportsHydration = false;
|
|
export const canHydrateInstance = shim;
|
|
export const canHydrateTextInstance = shim;
|
|
export const canHydrateSuspenseInstance = shim;
|
|
export const getNextHydratableSibling = shim;
|
|
export const getFirstHydratableChild = shim;
|
|
export const hydrateInstance = shim;
|
|
export const hydrateTextInstance = shim;
|
|
export const getNextHydratableInstanceAfterSuspenseInstance = shim;
|
|
export const clearSuspenseBoundary = shim;
|
|
export const clearSuspenseBoundaryFromContainer = shim;
|
|
export const didNotMatchHydratedContainerTextInstance = shim;
|
|
export const didNotMatchHydratedTextInstance = shim;
|
|
export const didNotHydrateContainerInstance = shim;
|
|
export const didNotHydrateInstance = shim;
|
|
export const didNotFindHydratableContainerInstance = shim;
|
|
export const didNotFindHydratableContainerTextInstance = shim;
|
|
export const didNotFindHydratableContainerSuspenseInstance = shim;
|
|
export const didNotFindHydratableInstance = shim;
|
|
export const didNotFindHydratableTextInstance = shim;
|
|
export const didNotFindHydratableSuspenseInstance = shim;
|