@darwish/hooks-core
Version:
32 lines (31 loc) • 1.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var react_1 = require("react");
var utils_is_1 = require("@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 = (0, react_1.useState)(initialVal), value = _a[0], setValue = _a[1];
var updateValueFn = function (updateValue) {
if ((0, utils_is_1.isFunction)(updateValue)) {
setValue(function (prev) { return updateValue(prev); });
}
else if (updateValue === null || updateValue === undefined) {
setValue(defaultVal);
}
else {
setValue(updateValue);
}
};
return [value, updateValueFn];
};
exports.default = useDefault;