Add Debounce.tsx

This commit is contained in:
porink0424
2024-07-10 17:59:21 +09:00
parent 42a54052d7
commit dee338a320
+28
View File
@@ -0,0 +1,28 @@
import React, { FC, useEffect } from 'react';
import { TextField, TextFieldProps } from '@mui/material';
export const DebouncedInputTextField: FC<{
onChange: (s: string, valid: boolean) => void;
delay: number;
textFieldProps: TextFieldProps;
}> = ({ onChange, delay, textFieldProps }) => {
const [text, setText] = React.useState<string>('');
const [valid, setValidity] = React.useState<boolean>(true);
useEffect(() => {
const timer = setTimeout(() => {
onChange(text, valid);
}, delay);
return () => {
clearTimeout(timer);
};
}, [text, delay]);
return (
<TextField
onChange={e => {
setText(e.target.value);
setValidity(e.target.validity.valid);
}}
{...textFieldProps}
/>
);
};