import { FC, useEffect, useState } from "react"; type Props = { value: string | number; onChange: (value: string | number) => void; debounce?: number; } & Omit, "onChange">; const DebouncedInput: FC = ({ value: initialValue, onChange, debounce = 500, ...props }) => { const [value, setValue] = useState(initialValue); const handleInputChange = (event: React.ChangeEvent) => setValue(event.target.value); useEffect(() => { setValue(initialValue); }, [initialValue]); useEffect(() => { const timeout = setTimeout(() => { onChange(value); }, debounce); return () => clearTimeout(timeout); }, [value]); return (
); }; export default DebouncedInput;