ahooks
Version:
react hooks library
45 lines (44 loc) • 1.88 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _tslib = require("tslib");
var _jsCookie = _interopRequireDefault(require("js-cookie"));
var _react = require("react");
var _useMemoizedFn = _interopRequireDefault(require("../useMemoizedFn"));
var _utils = require("../utils");
var useCookieState = function useCookieState(cookieKey) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _useState = (0, _react.useState)(function () {
var cookieValue = _jsCookie["default"].get(cookieKey);
if ((0, _utils.isString)(cookieValue)) {
return cookieValue;
}
if ((0, _utils.isFunction)(options.defaultValue)) {
return options.defaultValue();
}
return options.defaultValue;
}),
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
state = _useState2[0],
setState = _useState2[1];
var updateState = (0, _useMemoizedFn["default"])(function (newValue) {
var newOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
// eslint-disable-next-line @typescript-eslint/no-unused-vars
var _a = Object.assign(Object.assign({}, options), newOptions),
defaultValue = _a.defaultValue,
restOptions = (0, _tslib.__rest)(_a, ["defaultValue"]);
var value = (0, _utils.isFunction)(newValue) ? newValue(state) : newValue;
setState(value);
if (value === undefined) {
_jsCookie["default"].remove(cookieKey);
} else {
_jsCookie["default"].set(cookieKey, value, restOptions);
}
});
return [state, updateState];
};
var _default = exports["default"] = useCookieState;