react-obsidian
Version:
Dependency injection framework for React and React Native applications
14 lines (12 loc) • 551 B
text/typescript
import { useContext, useState } from 'react';
import { GraphContext } from './graphContext';
import type { Constructable, ObjectGraph } from '../..';
import { uniqueId } from '../../utils/uniqueId';
import { isString } from '../../utils/isString';
export const useInjectionToken = (keyOrGraph: string | Constructable<ObjectGraph>) => {
const ctx = useContext(GraphContext);
const [injectionToken] = useState(() => {
return ctx?.injectionToken ?? uniqueId(isString(keyOrGraph)? keyOrGraph : keyOrGraph.name);
});
return injectionToken;
};