import { useState, useEffect } from 'react'; import type { LoadableResult } from '../models'; export function useOnMount( promise: Promise, initialResult: T ): LoadableResult { const [response, setResponse] = useState>({ loaded: false, result: initialResult, }); useEffect(() => { (async () => { const result = await promise; setResponse({ loaded: true, result }); })(); }, [promise]); return response; }