mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
This is a follow up to https://github.com/facebook/react/pull/32069 In the prior change I updated Fizz to allow you to render Suspense boundaries at any level within a react-dom application by treating the document body as the default render scope. This change updates Fiber to provide similar semantics. Note that this update still does not deliver hydration so unifying the Fizz and Fiber implementations in a single App is not possible yet. The implementation required a rework of the getHostSibling and getHostParent algorithms. Now most HostSingletons are invisible from a host positioning perspective. Head is special in that it is a valid host scope so when you have Placements inside of it, it will act as the parent. But body, and html, will not directly participate in host positioning. Additionally to support flipping to a fallback html, head, and body tag in a Suspense fallback I updated the offscreen hiding/unhide logic to pierce through singletons when lookin for matching hidable nod boundaries anywhere (excluding hydration)
28 lines
792 B
JavaScript
28 lines
792 B
JavaScript
/**
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
* @flow
|
|
*/
|
|
|
|
// Renderers that don't support mutation
|
|
// can re-export everything from this module.
|
|
|
|
function shim(...args: any): any {
|
|
throw new Error(
|
|
'The current renderer does not support Singletons. ' +
|
|
'This error is likely caused by a bug in React. ' +
|
|
'Please file an issue.',
|
|
);
|
|
}
|
|
|
|
// Resources (when unsupported)
|
|
export const supportsSingletons = false;
|
|
export const resolveSingletonInstance = shim;
|
|
export const acquireSingletonInstance = shim;
|
|
export const releaseSingletonInstance = shim;
|
|
export const isHostSingletonType = shim;
|
|
export const isSingletonScope = shim;
|