one
Version:
One is a new React Framework that makes Vite serve both native and web.
25 lines (20 loc) • 783 B
text/typescript
import type { RenderAppProps } from './types'
type LoaderResolverProps = Pick<RenderAppProps, 'loaderData' | 'loaderServerData' | 'loaderProps'>
type ClientLoaderResolver = (props: LoaderResolverProps) => any
let clientLoaderResolver: null | ClientLoaderResolver = null
let didRun = false
export function onClientLoaderResolve(resolver: ClientLoaderResolver) {
if (didRun) {
throw new Error(
process.env.NODE_ENV === 'production'
? `Error 002`
: `Error: You called onClientLoaderResolve after it was run, register it in your root _layout.tsx`
)
}
clientLoaderResolver = resolver
}
export async function resolveClientLoader(props: LoaderResolverProps) {
didRun = true
if (!clientLoaderResolver) return
await clientLoaderResolver(props)
}