Suspense
Problem
How to show something while a component is loading?
Solution
Use <Suspense fallback={ whatever } > <ComponentToLoad /> </Suspense>
import { db } from './database.js';
import { Suspense } from 'react';
async function ConferencePage({ slug }) {
const conf = await db.Confs.find({ slug });
return (
<ConferenceLayout conf={conf}>
<Suspense fallback={<TalksLoading />}>
<Talks confId={conf.id} />
</Suspense>
</ConferenceLayout>
);
}
async function Talks({ confId }) {
const talks = await db.Talks.findAll({ confId });
const videos = talks.map(talk => talk.video);
return <SearchableVideoList videos={videos} />;
}
// Lazy loading components
const Component = lazy(
() => import('./Component')
)
<Suspense fallback={<Loading />} >
<Component />
</Suspense>