mirror of
https://github.com/facebook/docusaurus.git
synced 2025-04-29 10:17:55 +02:00
refactor(core): optimize App entrypoint, it should not re-render when navigating (#10060)
This commit is contained in:
parent
c746289db2
commit
eb07e9d6d4
1 changed files with 13 additions and 5 deletions
|
@ -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>
|
||||||
|
|
Loading…
Add table
Reference in a new issue