refactored Navbar component

This commit is contained in:
andres alcocer
2021-10-07 16:05:04 -04:00
parent 39b9995f82
commit 0bbbb9d5f3
4 changed files with 130 additions and 91 deletions

25
src/hooks/useDebounce.js Normal file
View File

@@ -0,0 +1,25 @@
import { useState, useEffect } from 'react'
export const useDebounce = (value, delay) => {
// State and setters for debounced value
const [debouncedValue, setDebouncedValue] = useState(value)
useEffect(
() => {
// Update debounced value after delay
const handler = setTimeout(() => {
setDebouncedValue(value)
}, delay)
// Cancel the timeout if value changes (also on delay change or unmount)
// This is how we prevent debounced value from updating if value is changed ...
// .. within the delay period. Timeout gets cleared and restarted.
return () => {
clearTimeout(handler)
}
},
[value, delay] // Only re-call effect if value or delay changes
)
return debouncedValue
}