react-axios-progressbar
Version:
Show a ProgressBar in React whenever an axios request is in progress.
32 lines (31 loc) • 1.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useActiveRequests = useActiveRequests;
const react_1 = require("react");
function useActiveRequests(axiosInstance) {
const [activeRequests, setActiveRequests] = (0, react_1.useState)(0);
function onNewRequest(config) {
setActiveRequests(activeRequests + 1);
return config;
}
function decreaseActiveRequests() {
setActiveRequests(Math.max(activeRequests - 1, 0));
}
function onRequestFulfilled(response) {
decreaseActiveRequests();
return response;
}
function onRequestRejected(error) {
decreaseActiveRequests();
return Promise.reject(error);
}
(0, react_1.useEffect)(() => {
const requestInterceptor = axiosInstance.interceptors.request.use(onNewRequest);
const responseInterceptor = axiosInstance.interceptors.response.use(onRequestFulfilled, onRequestRejected);
return () => {
axiosInstance.interceptors.request.eject(requestInterceptor);
axiosInstance.interceptors.response.eject(responseInterceptor);
};
}, [axiosInstance]);
return activeRequests;
}