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