You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

32 lines
708 B
JavaScript

import { useState, useEffect } from "react";
export function useDebounce(value, delay) {
const [debouncedValue, setDebouncedValue] = useState(value);
useEffect(() => {
const handler = setTimeout(() => {
setDebouncedValue(value);
}, delay);
return () => {
clearTimeout(handler);
};
}, [value, delay]);
return debouncedValue;
}
export function useModalState(state = false) {
const [isOpen, setIsOpen] = useState(state);
const toggle = () => {
setIsOpen(!isOpen);
};
const [data, setData] = useState(null);
return {
isOpen,
toggle,
setIsOpen,
data,
setData,
};
}