Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@kv/react-hooks / lib / setState.js
Size: Mime:
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.useStateDebounced = exports.useStateFp = void 0;
var react_1 = require("react");
var ramda_1 = require("ramda");
var lodash_1 = require("lodash");
/**
 * The `setState` function returned by `useState` always returns `undefined`,
 * which means you can't compose `setState` with other functions. This custom
 * hook returns a tapped version of `setState` as the setter that returns the
 * same value that was passed to it (i.e. `x => { setState(x); return x; }`)
 *
 * @usage
 * ```jsx
 * const [user, setUser] = useStateFp(initialUserState);
 * const updateUser = useCallback(
 *   newUserData => pipe(
 *     merge(user),
 *     setUser,
 *     displayToastWithUserData,
 *   )(newUserData),
 *   [setState]
 * );
 * ```
 */
var useStateFp = function (initialState) {
    var _a = react_1.useState(initialState), state = _a[0], _setState = _a[1];
    var setState = ramda_1.tap(_setState);
    return [state, setState];
};
exports.useStateFp = useStateFp;
var useStateDebounced = function (waitAmount, initialState) {
    var _a = react_1.useState(initialState), state = _a[0], setState = _a[1];
    var setStateDebounced = react_1.useMemo(function () { return lodash_1.debounce(setState, waitAmount); }, [waitAmount]);
    return [state, setStateDebounced];
};
exports.useStateDebounced = useStateDebounced;