UNPKG

solid-awesome-hooks

Version:
32 lines (31 loc) 882 B
import { createSignal, batch } from "solid-js"; export const useAsyncAction = () => { const [actionState, setActionState] = createSignal("ready"); const [errorMessage, setErrorMessage] = createSignal(); const tryAsync = async (action) => { batch(() => { setActionState("pending"); setErrorMessage(undefined); }); try { const data = await action(); setActionState("resolved"); return data; } catch (error) { setActionState("errored"); throw error; } }; const reset = () => batch(() => { setActionState("ready"); setErrorMessage(undefined); }); return { setErrorMessage, try: tryAsync, state: actionState, errorMessage, reset, }; };