// src/App.jsx import { useState, useEffect } from "react"; function useDebounce(value, delay) { const [debouncedValue, setDebouncedValue] = useState(value); useEffect(() => { const timeoutId = setTimeout(() => setDebouncedValue(value), delay); return () => clearTimeout(timeoutId); }, [value, delay]); return debouncedValue; } function SearchBox() { const [query, setQuery] = useState(""); const debouncedQuery = useDebounce(query, 400); return (
Live value: {query}
Debounced value (400ms after you stop typing): {debouncedQuery}