@asuka/di
Version:
Dependencies inject library
20 lines • 1.08 kB
JavaScript
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