b1a5821ee0
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.
21 lines
451 B
TypeScript
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
|
|
}
|