mirror of
https://github.com/uetchy/namae.git
synced 2025-07-01 14:00:03 +09:00
22 lines
519 B
TypeScript
22 lines
519 B
TypeScript
import {useState, useEffect} from 'react';
|
|
|
|
export function useDeferredState<T>(
|
|
duration = 1000,
|
|
initialValue: T,
|
|
): [T, React.Dispatch<React.SetStateAction<T>>] {
|
|
const [response, setResponse] = useState(initialValue);
|
|
const [innerValue, setInnerValue] = useState(initialValue);
|
|
|
|
useEffect(() => {
|
|
const fn = setTimeout(() => {
|
|
setResponse(innerValue);
|
|
}, duration);
|
|
|
|
return (): void => {
|
|
clearTimeout(fn);
|
|
};
|
|
}, [duration, innerValue]);
|
|
|
|
return [response, setInnerValue];
|
|
}
|