UNPKG

acud

Version:

acg react 组件库

50 lines (49 loc) • 1.65 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = useMergedState; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = require("react"); function useMergedState(defaultStateValue, option) { var _ref = option || {}, defaultValue = _ref.defaultValue, value = _ref.value, onChange = _ref.onChange, postState = _ref.postState; var _useState = (0, _react.useState)(function () { if (value !== undefined) { return value; } if (defaultValue !== undefined) { return typeof defaultValue === 'function' ? defaultValue() : defaultValue; } return typeof defaultStateValue === 'function' ? defaultStateValue() : defaultStateValue; }), _useState2 = (0, _slicedToArray2["default"])(_useState, 2), innerValue = _useState2[0], setInnerValue = _useState2[1]; var mergedValue = value !== undefined ? value : innerValue; if (postState) { mergedValue = postState(mergedValue); } function triggerChange(newValue) { setInnerValue(newValue); if (mergedValue !== newValue && onChange) { onChange(newValue, mergedValue); } } // Effect of reset value to `undefined` var firstRenderRef = (0, _react.useRef)(true); (0, _react.useEffect)(function () { if (firstRenderRef.current) { firstRenderRef.current = false; return; } if (value === undefined) { setInnerValue(value); } }, [value]); return [mergedValue, triggerChange]; }