Skip to content

useCopyToClipboard

클립보드 복사 기능을 제공하는 Hook입니다. 내부적으로 @teamsparta/utilscopyToClipboard를 사용합니다.

Signature

ts
function useCopyToClipboard(): UseCopyToClipboardReturn

Return

이름타입설명
copy(text: string) => Promise<boolean>텍스트를 클립보드에 복사하고, 성공 여부를 반환
copiedboolean복사 성공 여부
reset() => voidcopied 상태를 초기화

사용 예시

기본 사용

tsx
import { useCopyToClipboard } from '@teamsparta/react';

function CopyButton({ url }: { url: string }) {
  const { copy } = useCopyToClipboard();

  async function handleClick() {
    const result = await copy(url);
    if (result) toast.success('복사됨');
  }

  return <button onClick={handleClick}>링크 복사</button>;
}

일정 시간 후 자동 초기화

tsx
import { useEffect } from 'react';
import { useCopyToClipboard } from '@teamsparta/react';

function CopyButton({ url }: { url: string }) {
  const { copy, copied, reset } = useCopyToClipboard();

  async function handleClick() {
    await copy(url);
  }

  useEffect(() => {
    if (!copied) return;

    const timerId = setTimeout(reset, 2000);

    return () => clearTimeout(timerId);
  }, [copied, reset]);

  return <button onClick={handleClick}>{copied ? '복사됨!' : '링크 복사'}</button>;
}