@up-group-ui/react-controls
Version:
Up shared react controls
41 lines • 1.91 kB
JavaScript
;
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