UNPKG

@asuka/di

Version:
20 lines 1.08 kB
import React, { createContext, useContext, useMemo, memo } from 'react'; import { rootInjector } from './root-injector'; var _InjectableContext = createContext(rootInjector); export function InjectableContext(_a) { var children = _a.children; return React.createElement(_InjectableContext.Provider, { value: rootInjector }, children); } var ProvidersContext = createContext([]); 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); }, [providers]); return (React.createElement(_InjectableContext.Provider, { value: childInjectableFactory }, React.createElement(ProvidersContext.Provider, { value: providers }, children))); }); export function useInstance(provider) { var childInjector = useContext(_InjectableContext); return childInjector.getInstance(provider); } //# sourceMappingURL=context.js.map