export function useEvaluateFlag()

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;
}