@sevenoutman/use-debounced-memo
Version:
20 lines (19 loc) • 720 B
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var react_1 = require("react");
var lodash_debounce_1 = __importDefault(require("lodash.debounce"));
/**
* Debounced useMemo()
*/
function useDebouncedMemo(factory, deps, debounce) {
var _a = react_1.useState(factory()), state = _a[0], setState = _a[1];
var debouncedSetState = react_1.useCallback(lodash_debounce_1.default(setState, debounce), []);
react_1.useEffect(function () {
debouncedSetState(factory());
}, deps);
return state;
}
exports.default = useDebouncedMemo;