ayanami
Version:
A better way to react with state
25 lines (24 loc) • 1.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useAyanami = void 0;
var tslib_1 = require("tslib");
var React = tslib_1.__importStar(require("react"));
var get_1 = tslib_1.__importDefault(require("lodash/get"));
var core_1 = require("../core");
var constants_1 = require("../ssr/constants");
var flag_1 = require("../ssr/flag");
var ssr_context_1 = require("../ssr/ssr-context");
var use_ayanami_instance_1 = require("./use-ayanami-instance");
function useAyanami(A, config) {
var scope = get_1.default(config, 'scope');
var selector = get_1.default(config, 'selector');
var req = flag_1.isSSREnabled() ? React.useContext(ssr_context_1.SSRContext) : null;
var reqScope = req ? core_1.createScopeWithRequest(req, scope) : scope;
var ayanami = React.useMemo(function () { return core_1.getInstanceWithScope(A, reqScope); }, [reqScope]);
ayanami.scopeName = scope || constants_1.DEFAULT_SCOPE_NAME;
var useAyanamiInstanceConfig = React.useMemo(function () {
return { destroyWhenUnmount: scope === core_1.TransientScope, selector: selector };
}, [reqScope]);
return use_ayanami_instance_1.useAyanamiInstance(ayanami, useAyanamiInstanceConfig);
}
exports.useAyanami = useAyanami;