loadable.tsx 434 B

12345678910111213
  1. import React, { lazy, Suspense } from 'react'
  2. function loadable<P> (importFunc: () => Promise<{default: React.ComponentType<P>}>, { fallback = null } = { fallback: null }) {
  3. const LazyComponent = lazy<React.ComponentType<P>>(importFunc)
  4. return (props: React.ComponentPropsWithRef<React.ComponentClass<P>>) => (
  5. <Suspense fallback={fallback}>
  6. <LazyComponent {...props} />
  7. </Suspense>
  8. )
  9. }
  10. export default loadable