Next.jsでクリップボードにコピー

Next.jsでクリップボードにコピーする方法を説明します。 Reactでも動作します。

2025-5-28

Clipboard APIを利用します。

関数を定義

const copyToClipboard = async (text: string) => {
  try {
    await navigator.clipboard.writeText(text);
  } catch (err) {
    console.error(err);
  }
};
Note

Next.jsのapp directoryで利用する場合は、"use client"を追加する必要があります。

関数を呼ぶ

<button onClick={() => copyToClipboard('Copy')}>Copy</button>

コピー時に文言を変える

よくありそうなユースケースとしては、コピーしたことをユーザーに伝えるために、コピー後に文言を変えることがあります。

const [isCopied, setIsCopied] = useState(false);

const copyToClipboard = async (text: string) => {
  try {
    await navigator.clipboard.writeText(text);
    setIsCopied(true);
    setTimeout(() => {
      setIsCopied(false);
    }, 1000);
  } catch (err) {
    console.error(err);
  }
};

return (
  <button onClick={() => copyToClipboard('Copy')}>
    {isCopied ? 'Copied!' : 'Copy'}
  </button>
);