hooks - useDebounce
import { useDebounce } from '@sky-uk/ui-core';
The useDebounce hook can be used to return a value only when a repeated action has been delayed for greater than a given time delay. Debounce is most suitably used for control events such as typing or button clicks.
() => { const Example = () => { const [value, setValue] = React.useState(''); const debouncedValue = useDebounce(value); const handleChange = e => setValue(e.target.value); return ( <Flex $flexDirection="column"> <TextInput value={value} $marginBottom={4} onChange={handleChange} /> <div>debouncedValue: {debouncedValue}</div> </Flex> ); } return <Example />; }
Options
delay
The delay option can be set in ms. This option is defaulted to 500ms.
() => { const Example = () => { const [value, setValue] = React.useState(''); const debouncedValue = useDebounce(value, { delay: 1000 }); const handleChange = e => setValue(e.target.value); return ( <Flex $flexDirection="column"> <TextInput value={value} $marginBottom={4} onChange={handleChange} /> <div>debouncedValue: {debouncedValue}</div> </Flex> ); } return <Example />; }