UNPKG

@up-group-ui/react-controls

Version:
41 lines 1.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useSafeStateWithReducerGeneric = exports.useSafeStateWithReducer = exports.useSafeState = void 0; var tslib_1 = require("tslib"); var useMountedRef_1 = (0, tslib_1.__importDefault)(require("./useMountedRef")); var react_1 = require("react"); function useSafeState(initialState) { var _a = (0, react_1.useState)(initialState), state = _a[0], setState = _a[1]; var mountedRef = (0, useMountedRef_1.default)(); var safeSetState = (0, react_1.useCallback)(function (args) { if (mountedRef.current) { setState(args); } }, [setState, mountedRef]); return [state, safeSetState]; } exports.useSafeState = useSafeState; var useSafeStateWithReducer = function (initialValue) { var _a = (0, react_1.useReducer)(function (state, newState) { return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, state), newState)); }, initialValue), state = _a[0], setState = _a[1]; var mountedRef = (0, useMountedRef_1.default)(); return [ state, (0, react_1.useCallback)(function (args) { mountedRef.current && setState(args); }, [setState, mountedRef]), ]; }; exports.useSafeStateWithReducer = useSafeStateWithReducer; var useSafeStateWithReducerGeneric = function (initialValue) { var _a = (0, react_1.useReducer)(function (state, newState) { return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, state), newState)); }, initialValue), state = _a[0], setState = _a[1]; var mountedRef = (0, useMountedRef_1.default)(); return [ state, (0, react_1.useCallback)(function (args) { mountedRef.current && setState(args); }, [setState, mountedRef]), ]; }; exports.useSafeStateWithReducerGeneric = useSafeStateWithReducerGeneric; exports.default = useSafeState; //# sourceMappingURL=useSafeState.js.map