use-state-promise
Version:
A custom useState hook with support for Promise
25 lines • 809 B
JavaScript
import { useCallback, useEffect, useRef, useState } from 'react';
export const useStatePromise = (initialState, skipFirst = true) => {
const [state, setState] = useState(initialState);
const first = useRef(skipFirst);
const resolver = useRef(null);
const setStatePromise = useCallback((value) => {
setState(value);
return new Promise((resolve) => {
resolver.current = resolve;
});
}, []);
useEffect(() => {
if (first.current) {
first.current = false;
return;
}
if (resolver.current) {
resolver.current(state);
resolver.current = null;
}
}, [state]);
return [state, setStatePromise, setState];
};
export default useStatePromise;
//# sourceMappingURL=index.js.map