UNPKG

ditox-react

Version:

Dependency injection container for React.js

33 lines 1.08 kB
import { useContext, useMemo } from 'react'; import { DependencyContainerContext } from './DependencyContainer'; /** * @internal */ export function useDependencyContainer(mode) { const container = useContext(DependencyContainerContext); if (!container && mode === 'strict') { throw new Error('Container is not provided by DependencyContainer component'); } return container; } /** * @category Hook * * Returns a dependency by token, or fails with an error. */ export function useDependency(token) { const container = useDependencyContainer('strict'); const value = useMemo(() => container.resolve(token), [container, token]); return value; } /** * @category Hook * * Returns a dependency by token, or `undefined` in case the dependency is not provided. */ export function useOptionalDependency(token) { const container = useDependencyContainer(); const value = useMemo(() => container === null || container === void 0 ? void 0 : container.get(token), [container, token]); return value; } //# sourceMappingURL=hooks.js.map