Bin
2025-12-17 8c7632e4a973d7e005f6b070a7627205d869a344
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import { type Dispatch, type SetStateAction, useEffect, useMemo, useState } from "react";
 
export const useValueTracker = <T>(value: T, defaultValue?: T): [T, Dispatch<SetStateAction<T>>] => {
  const initialValue = useMemo(() => {
    return (value ?? defaultValue ?? "") as T;
  }, [value, defaultValue]);
 
  const [finalValue, setValue] = useState<T>(initialValue);
 
  useEffect(() => {
    setValue(initialValue);
  }, [initialValue]);
 
  return [finalValue as T, setValue];
};