@sigi/react
Version:
React bindings for sigi framework
21 lines • 1.19 kB
JavaScript
import { __read, __spreadArray } from "tslib";
import { jsx as _jsx } from "react/jsx-runtime";
import { rootInjector } from '@sigi/di';
import { createContext, useContext, useMemo, memo } from 'react';
export var _InjectableContext = createContext(rootInjector);
export var InjectionProvidersContext = memo(function (_a) {
var _b = _a.providers, providers = _b === void 0 ? [] : _b, children = _a.children;
var parentInjector = useContext(_InjectableContext);
var childInjectableFactory = useMemo(function () { return parentInjector.createChild(providers); }, __spreadArray([parentInjector], __read(providers), false));
return _jsx(_InjectableContext.Provider, { value: childInjectableFactory, children: children });
});
export function useInstance(provider) {
var childInjector = useContext(_InjectableContext);
return childInjector.getInstance(provider);
}
export function useServerInstance(provider) {
var _a;
var childInjector = useContext(_InjectableContext);
return ((_a = childInjector.serverCache) === null || _a === void 0 ? void 0 : _a.get(provider)) || childInjector.getInstance(provider);
}
//# sourceMappingURL=injectable-context.js.map