react-use/docs/useThrottleFn.md
streamich 452e8d9425 feat: 🎸 simplify and improve useThrottle hook
Create a version of the hook that simply throttled a value, hook that
throttles a function will be called useThrottleFn.

BREAKING CHANGE: 🧨 useThrottle is now a completely different hook
2019-03-27 21:10:57 +01:00

1.2 KiB

useThrottleFn

React hook that invokes a function and then delays subsequent function calls until after wait milliseconds have elapsed since the last time the throttled function was invoked.

The third argument is the array of values that the throttle depends on, in the same manner as useEffect. The throttle timeout will start when one of the values changes.

Usage

import React, { useState } from 'react';
import { useThrottleFn } from 'react-use';

const Demo = () => {
  const [status, setStatus] = React.useState('Updating stopped');
  const [value, setValue] = React.useState('');
  const [throttledValue, setThrottledValue] = React.useState('');

  useThrottleFn(
    () => {
      setStatus('Waiting for input...');
      setThrottledValue(value);
    },
    2000,
    [value]
  );

  return (
    <div>
      <input
        type="text"
        value={value}
        placeholder="Throttled input"
        onChange={({ currentTarget }) => {
          setStatus('Updating stopped');
          setValue(currentTarget.value);
        }}
      />
      <div>{status}</div>
      <div>Throttled value: {throttledValue}</div>
    </div>
  );
};

Reference

useThrottleFn(fn, ms: number, args: any[]);