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