Skip to content

Instantly share code, notes, and snippets.

@davidwallacejackson
Last active July 19, 2019 23:32
Show Gist options
  • Select an option

  • Save davidwallacejackson/e26aa8c10fb042cbb161b06c87b2abc0 to your computer and use it in GitHub Desktop.

Select an option

Save davidwallacejackson/e26aa8c10fb042cbb161b06c87b2abc0 to your computer and use it in GitHub Desktop.
import { useState, useEffect } from 'react';
type State<T> = {
data?: T;
error?: T;
};
export default function useAsync<T>(
getData: () => Promise<T>,
deps: readonly any[],
): State<T> {
const [state, setState] = useState<State<T>>({});
useEffect(() => {
getData()
.then(data => setState({ data }))
.catch(error => setState({ error }));
}, deps);
return state;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment