Skip to content

Instantly share code, notes, and snippets.

@abonello
Forked from codemile/Repeater.tsx
Created December 30, 2021 20:17
Show Gist options
  • Select an option

  • Save abonello/4cbbf941db215b6eb25170fab387ac7f to your computer and use it in GitHub Desktop.

Select an option

Save abonello/4cbbf941db215b6eb25170fab387ac7f to your computer and use it in GitHub Desktop.

Revisions

  1. @codemile codemile created this gist May 19, 2021.
    29 changes: 29 additions & 0 deletions Repeater.tsx
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,29 @@
    import {FC, useEffect} from 'react';

    export interface RepeaterProps {
    disabled?: boolean;

    emitFirst?: boolean;

    onRepeat: () => void;

    speed: number;
    }

    export const Repeater: FC<RepeaterProps> = ({
    emitFirst,
    disabled,
    onRepeat,
    speed
    }) => {
    useEffect(() => {
    if (!disabled) {
    emitFirst && onRepeat();
    if (speed > 0) {
    const id = setInterval(() => onRepeat(), speed);
    return () => clearInterval(id);
    }
    }
    }, [emitFirst, disabled, onRepeat, speed]);
    return null;
    };