Re-renders the component after a specified number of milliseconds.
Provides handles to cancel and/or reset the timeout.
import { useTimeout } from 'react-use';
function TestComponent(props: { ms?: number } = {}) {
const ms = props.ms || 5000;
const [isReady, cancel] = useTimeout(ms);
return (
<div>
{ isReady() ? 'I\'m reloaded after timeout' : `I will be reloaded after ${ ms / 1000 }s` }
{ isReady() === false ? <button onClick={ cancel }>Cancel</button> : '' }
</div>
);
}
const Demo = () => {
return (
<div>
<TestComponent />
<TestComponent ms={ 10000 } />
</div>
);
};
const [
isReady: () => boolean | null,
cancel: () => void,
reset: () => void,
] = useTimeout(ms: number = 0);
isReady
:()=>boolean|null
- function returning current timeout state:false
- pending re-rendertrue
- re-render performednull
- re-render cancelled
cancel
:()=>void
- cancel the timeout (component will not be re-rendered)reset
:()=>void
- reset the timeout