in packages/react/src/index.tsx [252:287]
export function useEvaluateFlag(
path: string,
defaultValue: string,
confidence?: ConfidenceReact,
): FlagEvaluation<string>;
export function useEvaluateFlag(
path: string,
defaultValue: number,
confidence?: ConfidenceReact,
): FlagEvaluation<number>;
export function useEvaluateFlag(
path: string,
defaultValue: boolean,
confidence?: ConfidenceReact,
): FlagEvaluation<boolean>;
export function useEvaluateFlag<T extends Value>(
path: string,
defaultValue: T,
confidence?: ConfidenceReact,
): FlagEvaluation<T>;
export function useEvaluateFlag<T extends Value>(
path: string,
defaultValue: T,
// eslint-disable-next-line react-hooks/rules-of-hooks
confidence = useConfidence(),
): FlagEvaluation<T> {
const evaluation = confidence.delegate.evaluateFlag(path, defaultValue);
const [, setState] = useState(() => confidence.contextState);
useEffect(() => {
return confidence.subscribe(() => {
setState(confidence.contextState);
});
});
if ('then' in evaluation) throw evaluation;
return evaluation;
}