/
githubmirror
/
tldraw
Обзор
Документация
Войти
/
githubmirror
/
tldraw
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
apps/dotcom/client/src/utils/defineLoader.tsx
26 строк
706 B
alex
Clean up `apps` directory (#4548)
18 сен 2024, 13:17
Не верифицирован
18 сен 2024, 13:17
ab9833c
Код
Авторство
О чём код?
import { LoaderFunctionArgs, useLoaderData } from 'react-router-dom' export function defineLoader<T>(_loader: (args: LoaderFunctionArgs) => Promise<T>): { loader(args: LoaderFunctionArgs): Promise<{ [specialSymbol]: T }> useData(): Exclude<T, Response> } { const specialSymbol = Symbol('loader') const loader = async (params: any) => { const result = await _loader(params) if (result instanceof Response) { return result } return { [specialSymbol]: result, } as any } return { loader, useData() { const raw = useLoaderData() if (typeof raw === 'object' && raw && specialSymbol in raw) return raw[specialSymbol] as any throw new Error('Loader data not found') }, } }