UNPKG

@bigbinary/neeto-datepicker

Version:
29 lines (28 loc) 1.17 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = useSyncState; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var React = _interopRequireWildcard(require("react")); /** * Sync value with state. * This should only used for internal which not affect outside calculation. * Since it's not safe for suspense. */ function useSyncState(defaultValue, controlledValue) { var valueRef = React.useRef(defaultValue); var _React$useState = React.useState({}), _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2), forceUpdate = _React$useState2[1]; var getter = function getter(useControlledValueFirst) { return useControlledValueFirst && controlledValue !== undefined ? controlledValue : valueRef.current; }; var setter = function setter(nextValue) { valueRef.current = nextValue; forceUpdate({}); }; return [getter, setter, getter(true)]; }