UNPKG

@mic-rexjs/usecases-react

Version:

React-based solution for use usecases of Clean Architecture

38 lines (37 loc) 1.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useContextualItem = void 0; var _useConstantReducers2 = require("../useConstantReducers"); var _useDepsKey = require("../useDepsKey"); var _ahooks = require("ahooks"); var _Statuses = require("../../enums/Statuses"); var _methodUseCase = require("../../usecases/methodUseCase"); var useContextualItem = exports.useContextualItem = function useContextualItem(contextItem, statuses, createFactory) { var deps = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : []; var depsKey = (0, _useDepsKey.useDepsKey)(deps); var factoryRef = (0, _ahooks.useLatest)(createFactory); var _useConstantReducers = (0, _useConstantReducers2.useConstantReducers)(_methodUseCase.methodUseCase), cacheCall = _useConstantReducers.cacheCall; var onCache = (0, _ahooks.useMemoizedFn)(function () { var currentFactory = factoryRef.current; // 防止在以下 `onCreate()` 多次调用实际 `factory` return cacheCall(currentFactory, { onCompare: function onCompare() { return true; } }); }); var onCreate = (0, _ahooks.useCreation)(function () { void depsKey; return onCache(); }, [depsKey, onCache]); return (0, _ahooks.useCreation)(function () { var rootEnabled = (statuses & _Statuses.Statuses.RootEnabled) === _Statuses.Statuses.RootEnabled; if (!rootEnabled && contextItem) { return contextItem; } return onCreate(); }, [statuses, contextItem, onCreate]); };