UNPKG

@appbuckets/react-ui-core

Version:

Core utilities built for AppBuckets React UI Framework

60 lines (54 loc) 1.52 kB
'use strict'; var tslib = require('tslib'); var React = require('react'); function _interopNamespace(e) { if (e && e.__esModule) return e; var n = Object.create(null); if (e) { Object.keys(e).forEach(function (k) { if (k !== 'default') { var d = Object.getOwnPropertyDescriptor(e, k); Object.defineProperty( n, k, d.get ? d : { enumerable: true, get: function () { return e[k]; }, } ); } }); } n['default'] = e; return Object.freeze(n); } var React__namespace = /*#__PURE__*/ _interopNamespace(React); function useMountedState(initialState) { /** Init the state */ var _a = tslib.__read(React__namespace.useState(initialState), 2), state = _a[0], setStateBase = _a[1]; /** Init a ref to check if component is mounted or not */ var isMounted = React__namespace.useRef(false); /** Change isMounted value on component mount/unmount */ React__namespace.useEffect(function () { isMounted.current = true; return function () { isMounted.current = false; }; }, []); /** Create a wrap to setState function */ var setState = React__namespace.useCallback(function (newState) { /** Assert component is mount */ if (isMounted.current) { setStateBase(newState); } }, []); /** Return state and wrapped function */ return [state, setState]; } module.exports = useMountedState;