UNPKG

react-firehooks

Version:

Lightweight dependency-free collection of React hooks for Firebase

42 lines (41 loc) 1.1 kB
import { useCallback, useMemo, useState } from "react"; export const LoadingState = Symbol(); /** * @internal */ export function useLoadingValue(initialState) { const [state, setState] = useState({ error: undefined, loading: initialState === LoadingState ? true : false, value: initialState === LoadingState ? undefined : initialState, }); const setValue = useCallback((value) => { setState({ value, loading: false, error: undefined, }); }, []); const setLoading = useCallback(() => { setState({ value: undefined, loading: true, error: undefined, }); }, []); const setError = useCallback((error) => { setState({ value: undefined, loading: false, error, }); }, []); return useMemo(() => ({ value: state.value, setValue, loading: state.loading, setLoading, error: state.error, setError, }), [state, setValue, setLoading, setError]); }