UNPKG

@fruits-chain/react-native-xiaoshu

Version:
34 lines (33 loc) • 923 B
"use strict"; import { useState } from 'react'; import usePersistFn from "./usePersistFn.js"; function useControllableValue(props = {}, options = {}) { const { defaultValue, defaultValuePropName = 'defaultValue', valuePropName = 'value', trigger = 'onChange' } = options; const value = props[valuePropName]; const isControlled = valuePropName in props; const [localValue, setLocalValue] = useState(() => { if (isControlled) { return value; } if (defaultValuePropName in props) { return props[defaultValuePropName]; } return defaultValue; }); const setState = (v, ...args) => { if (!isControlled) { setLocalValue(v); } if (props[trigger]) { props[trigger](v, ...args); } }; return [isControlled ? value : localValue, usePersistFn(setState)]; } export default useControllableValue; //# sourceMappingURL=useControllableValue.js.map