bananahooks
Version:
"Collection" of custom React Hooks.
37 lines (33 loc) • 903 B
JavaScript
;
var React = require('react');
function usePromise(promiseOrFunction, defaultValue) {
const [state, setState] = React.useState({
value: defaultValue,
error: null,
isPending: true
});
React.useEffect(() => {
const promise = typeof promiseOrFunction === "function" ? promiseOrFunction() : promiseOrFunction;
let isSubscribed = true;
promise.then(value => isSubscribed ? setState({
value,
error: null,
isPending: false
}) : null).catch(error => isSubscribed ? setState({
value: defaultValue,
error: error,
isPending: false
}) : null);
return () => {
isSubscribed = false;
};
}, [promiseOrFunction, defaultValue]);
const {
value,
error,
isPending
} = state;
return [value, error, isPending];
}
exports.usePromise = usePromise;
//# sourceMappingURL=bananahooks.cjs.development.js.map