use-state-promise
Version:
A custom useState hook with support for Promise
30 lines • 1.05 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.useStatePromise = void 0;
var react_1 = require("react");
var useStatePromise = function (initialState, skipFirst) {
if (skipFirst === void 0) { skipFirst = true; }
var _a = react_1.useState(initialState), state = _a[0], setState = _a[1];
var first = react_1.useRef(skipFirst);
var resolver = react_1.useRef(null);
var setStatePromise = react_1.useCallback(function (value) {
setState(value);
return new Promise(function (resolve) {
resolver.current = resolve;
});
}, []);
react_1.useEffect(function () {
if (first.current) {
first.current = false;
return;
}
if (resolver.current) {
resolver.current(state);
resolver.current = null;
}
}, [state]);
return [state, setStatePromise, setState];
};
exports.useStatePromise = useStatePromise;
exports.default = exports.useStatePromise;
//# sourceMappingURL=index.js.map
;