mirror of
https://github.com/streamich/react-use.git
synced 2025-12-08 18:02:14 +00:00
50 lines
1.2 KiB
Markdown
50 lines
1.2 KiB
Markdown
# `useDebounce`
|
|
|
|
React hook that delays invoking a function until after wait milliseconds have elapsed since the last time the debounced function was invoked.
|
|
|
|
The third argument is the array of values that the debounce depends on, in the same manner as useEffect. The debounce timeout will start when one of the values changes.
|
|
|
|
## Usage
|
|
|
|
```jsx
|
|
import React, { useState } from 'react';
|
|
import { useDebounce } from 'react-use';
|
|
|
|
const Demo = () => {
|
|
const [state, setState] = React.useState('Typing stopped');
|
|
const [val, setVal] = React.useState('');
|
|
const [debouncedValue, setDebouncedValue] = React.useState('');
|
|
|
|
useDebounce(
|
|
() => {
|
|
setState('Typing stopped');
|
|
setDebouncedValue(val);
|
|
},
|
|
2000,
|
|
[val]
|
|
);
|
|
|
|
return (
|
|
<div>
|
|
<input
|
|
type="text"
|
|
value={val}
|
|
placeholder="Debounced input"
|
|
onChange={({ currentTarget }) => {
|
|
setState('Waiting for typing to stop...');
|
|
setVal(currentTarget.value);
|
|
}}
|
|
/>
|
|
<div>{state}</div>
|
|
<div>Debounced value: {debouncedValue}</div>
|
|
</div>
|
|
);
|
|
};
|
|
```
|
|
|
|
## Reference
|
|
|
|
```ts
|
|
useDebounce(fn, ms: number, args: any[]);
|
|
```
|