@darwish/hooks-core
Version:
30 lines (29 loc) • 1.03 kB
JavaScript
import { useState } from "react";
import { isFunction } from "@darwish/utils-is";
/**
* @description A hook to set default value
* @param defaultVal default value
* @param initialVal initial value
* @returns [value, updateValueFn] -> Array
* @example
* const [state, updateState] = useDefault('default value', 'initial value');
* updateState('new value'); // state = 'new value'
* updateState(null); // state = 'default value'
* updateState(undefined); // state = 'default value'
*/
var useDefault = function (defaultVal, initialVal) {
var _a = useState(initialVal), value = _a[0], setValue = _a[1];
var updateValueFn = function (updateValue) {
if (isFunction(updateValue)) {
setValue(function (prev) { return updateValue(prev); });
}
else if (updateValue === null || updateValue === undefined) {
setValue(defaultVal);
}
else {
setValue(updateValue);
}
};
return [value, updateValueFn];
};
export default useDefault;