@ns3/react-di
Version:
React implementation of dependency injection based on @ns3/di
23 lines (18 loc) • 703 B
JavaScript
import { createContext, useContext, useMemo } from 'react';
import { Container } from '@ns3/di';
import { unpackFactoryOrValue } from '@ns3/ts-utils';
const DiContext = createContext(undefined);
const DiProvider = DiContext.Provider;
function useDependency(type) {
const container = useContext(DiContext);
return container.get(type);
}
function useDependencyInjection(factory = () => []) {
return useMemo(() => {
const container = Container.make();
const dependencies = unpackFactoryOrValue(factory);
dependencies.filter(config => config).forEach(config => container.provide(config));
return container;
}, []);
}
export { DiProvider, useDependency, useDependencyInjection };