Я искал способы оптимизации моего текущего приложения React (в настоящее время в 16.13). Один из способов, который я ищу, - измельчить пакет до минимума.
Я видел, что React.lazy
позволяет нам изначально разделять код приложения, а затем использовать React.Suspense
, чтобы обеспечить механизм отката при получении пакета.
После просмотра документации React я видел несколько примеров использования <Suspense>
во всем приложении.
Мне было интересно, будет ли использование приостановки верхнего уровня иметь те же эффекты?
// app.tsx (Omitted for brevity)
function App() {
return (
//https://github.com/awslabs/aws-mobile-appsync-sdk-js/issues/362#issuecomment-496773827
<ApolloProvider client={client as any}>
<Suspense fallback={<CircularLoader />}>
<Location>
{({ location }) => (
<AuthenticatorProvider
location={{ pathname: location.pathname, hash: location.hash }}
>
<ThemeProvider theme={theme}>
<Router>
<Root path={`${routerBasePath}/*`} />
</Router>
</ThemeProvider>
</AuthenticatorProvider>
)}
</Location>
</Suspense>
</ApolloProvider>
);
}
Тогда:
/// index.tsx
ReactDOM.render(
<App />,
document.getElementById('root'),
);
Моя цель в настоящее время - уменьшить начальный размер пакета, и, хотя я все еще пытаюсь выяснить, я хотел знать, предотвратит ли этот механизм эффект водопада в моем приложении, поскольку, насколько я понимаю, каждый раз, когда элемент визуализируется, он будет лениво загружать фрагмент, а затем визуализировать компонент.