UNPKG

@fruits-chain/react-native-xiaoshu

Version:
56 lines (44 loc) • 1.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = require("react"); var _usePersistFn = _interopRequireDefault(require("./usePersistFn")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function useControllableValue() { let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; const { defaultValue, defaultValuePropName = 'defaultValue', valuePropName = 'value', trigger = 'onChange' } = options; const value = props[valuePropName]; const isControlled = (valuePropName in props); const [localValue, setLocalValue] = (0, _react.useState)(() => { if (isControlled) { return value; } if (defaultValuePropName in props) { return props[defaultValuePropName]; } return defaultValue; }); const setState = function (v) { if (!isControlled) { setLocalValue(v); } if (props[trigger]) { for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } props[trigger](v, ...args); } }; return [isControlled ? value : localValue, (0, _usePersistFn.default)(setState)]; } var _default = useControllableValue; exports.default = _default; //# sourceMappingURL=useControllableValue.js.map