@gdjiami/hooks
Version:
react hooks for mygzb.com
53 lines (47 loc) • 1.17 kB
JavaScript
/* tslint:disable:no-any */
import { useEffect, useState, useCallback } from 'react';
/**
* 在组件挂载时执行异步操作
* @deprecated
*/
export default function useAsyncOnMount(fn, inputs) {
if (inputs === void 0) {
inputs = [];
}
var _useState = useState(true),
loading = _useState[0],
setLoading = _useState[1];
var _useState2 = useState(undefined),
error = _useState2[0],
setError = _useState2[1];
var _useState3 = useState(undefined),
value = _useState3[0],
setValue = _useState3[1];
var _useState4 = useState(0),
retryCount = _useState4[0],
forceRetry = _useState4[1];
var retry = useCallback(function () {
forceRetry(function (s) {
return s + 1;
});
}, []);
useEffect(function () {
setError(undefined);
setLoading(true);
fn().then(function (val) {
setValue(val);
setLoading(false);
}, function (err) {
setLoading(false);
setError(err);
});
}, [retryCount].concat(inputs));
return {
loading: loading,
error: error,
value: value,
retry: retry,
refetch: retry,
setValue: setValue
};
}