0

In my project, I want to use debounce method but this code is not working properly. It prints the input value continuously after a delay. I just want to print the input value when the user's typing is over.

const [searchItem, setSearchItem] = useState('');

const getData = () => console.log(searchItem);

const handleSearch = (fn, delay) => {
    let timer;
    return () => {
        clearTimeout(timer);

        timer = setTimeout(() => {
            fn();
        }, delay)
    }
}

const search = handleSearch(getData, 1000)

return (
    <section className="container">
        <h2 className="main__title">Search Name</h2>
        <input type="text" onKeyUp={search} value={searchItem} onChange={e => setSearchItem(e.target.value.toLowerCase().trim())} placeholder="Seach Name" className="search__input" />
    </section>
);

I just want to print the name in the console when the user's typing is over or after 1s delay.

0 Answers0