refactor(core): optimize App entrypoint, it should not re-render when navigating (#10060)

This commit is contained in:
Sébastien Lorber 2024-04-19 13:13:52 +02:00 committed by GitHub
parent c746289db2
commit eb07e9d6d4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -25,9 +25,19 @@ import SiteMetadataDefaults from './SiteMetadataDefaults';
import ErrorBoundary from '@docusaurus/ErrorBoundary';
import HasHydratedDataAttribute from './hasHydratedDataAttribute';
export default function App(): JSX.Element {
const routeElement = renderRoutes(routes);
const routesElement = renderRoutes(routes);
function AppNavigation() {
const location = useLocation();
const normalizedLocation = normalizeLocation(location);
return (
<PendingNavigation location={normalizedLocation}>
{routesElement}
</PendingNavigation>
);
}
export default function App(): JSX.Element {
return (
<ErrorBoundary>
<DocusaurusContextProvider>
@ -36,9 +46,7 @@ export default function App(): JSX.Element {
<SiteMetadataDefaults />
<SiteMetadata />
<BaseUrlIssueBanner />
<PendingNavigation location={normalizeLocation(location)}>
{routeElement}
</PendingNavigation>
<AppNavigation />
</Root>
<HasHydratedDataAttribute />
</BrowserContextProvider>