rsnext/packages/next/client/components/shared/dynamic/index.tsx
Jiachi Liu b1a5821ee0
Add shared dynamic api (#39163)
Add `next/dist/client/components/shared/dynamic` as shared api which server and client components can both support. 
Dynamic imports will be part of flight on server side.
This pr doesn't contain preloading part for client components.
2022-07-29 11:03:05 +00:00

21 lines
451 B
TypeScript

import React from 'react'
export type LoaderComponent<P = {}> = Promise<{
default: React.ComponentType<P>
}>
export type Loader<P = {}> = () => LoaderComponent<P>
export type DynamicOptions<P = {}> = {
loader?: Loader<P>
}
export type LoadableComponent<P = {}> = React.ComponentType<P>
export default function dynamic<P = {}>(
loader: Loader<P>
): React.ComponentType<P> {
const LazyLoadable = React.lazy(loader)
return LazyLoadable
}