next
Version:
The React Framework
20 lines (19 loc) • 1.05 kB
JavaScript
import { browser } from 'react-dom';
import { BailoutToCSRError } from '../../shared/lib/lazy-dynamic/bailout-to-csr';
import { createReactBrowserBailoutReason } from '../../shared/lib/lazy-dynamic/react-browser-bailout';
const RENDER_IN_BROWSER_BAILOUT_REASON = 'Render in Browser';
const getRenderInBrowserBailoutReason = createReactBrowserBailoutReason.bind(null, RENDER_IN_BROWSER_BAILOUT_REASON);
/**
* Aborting a resumed render with a recoverable reason tells React to leave the
* postponed boundary for the browser instead of reporting a render error.
*/ export function createRenderInBrowserAbortSignal(reactBrowserBailout) {
const controller = new AbortController();
if (reactBrowserBailout) {
// @ts-expect-error TODO: Update @types/react-dom to include the reason argument.
controller.abort(browser(getRenderInBrowserBailoutReason));
} else {
controller.abort(new BailoutToCSRError(RENDER_IN_BROWSER_BAILOUT_REASON));
}
return controller.signal;
}
//# sourceMappingURL=render-in-browser.js.map