Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 

35 Zeilen
1.1 KiB

  1. import { SyntheticEvent } from 'react';
  2. export declare type ThrottledHandler<TEvent> = ((event: TEvent) => void) & {
  3. clear(): void;
  4. };
  5. /**
  6. * Creates a event handler function throttled by `requestAnimationFrame` that
  7. * returns the **most recent** event. Useful for noisy events that update react state.
  8. *
  9. * ```tsx
  10. * function Component() {
  11. * const [position, setPosition] = useState();
  12. * const handleMove = useThrottledEventHandler<React.PointerEvent>(
  13. * (event) => {
  14. * setPosition({
  15. * top: event.clientX,
  16. * left: event.clientY,
  17. * })
  18. * }
  19. * )
  20. *
  21. * return (
  22. * <div onPointerMove={handleMove}>
  23. * <div style={position} />
  24. * </div>
  25. * );
  26. * }
  27. * ```
  28. *
  29. * @param handler An event handler function
  30. * @typeParam TEvent The event object passed to the handler function
  31. * @returns The event handler with a `clear` method attached for clearing any in-flight handler calls
  32. *
  33. */
  34. export default function useThrottledEventHandler<TEvent = SyntheticEvent>(handler: (event: TEvent) => void): ThrottledHandler<TEvent>;