Skip to content

nutgaard/use-async

Repository files navigation

use-async

styled with prettier Travis codecov dependencies Status

Installation

npm install @nutgaard/use-async --save

Usage

The library exposes one hook useAsync, and three utility-functions to help use the result (isPending, hasData and hasError).

import React from 'react';
import useAsync, { isPending, hasError } from '@nutgaard/use-async';

const source = React.useCallback((isRerun) => Promise.resolve("your data here"), []);
const result = useAsync(source);

if (isPending(result)) {
  return <Spinner />;
} else if (hasError(result)) {
  return <Error />
} 

return <pre>{result.data}</pre>

useAsync API

Argument Type Optional Default 
source (isRerun) => Promise<DATA> No -
lazy boolean Yes false
dependencyList Array<any> Yes undefiend

In cases where dependencyList is defined it is passed on to useEffect instead of source.
This allows a greater control of when the effect should run in cases where the source does not necessarily change.

Types

Full documentation of types can be seen here, or in the 80-ish lines of code.

Credits

Made using the awesome typescript library starter