- ## useDebounce **1. value debounce** ``` import React, { useState } from "react"; import { useDebounce } from "use-utils"; function App() { const [inputVal, setInputVal] = useState(""); // you can use this value for api call const debouncedValue = useDebounce(inputVal, 500); return (
setInputVal(e.target.value)} />

debounced value: {debouncedValue}

); } ``` **2. function debounce** ``` import React, { useState, useRef } from "react"; import { useDebounceFunction } from "use-utils"; function App() { const [logState, setLogState] = useState(""); const refInput = useRef(null); const debouncedSetLogState = useDebounceFunction(() => { setLogState(refInput.current ? refInput.current.value : ''); }, 500); return (
Logged Val: {logState}
); } ``` #### signature ``` useDebounce(value, delay) -> return: value(debounced version of value) useDebounceFunction(function, delay) -> return: function(debounced version of function) arguments: value: required delay: required (default: 200) function: required delay: required (default: 200) ``` #### note ``` Don't use useDebounceFunction inside useEffect hook - why ? -> because useEffect run in every re-render so ultimately you will end up creating new copy of function inside your component ! ```