How to copy an API key to clipboard
This example demonstrates how to copy an API key to clipboard using the useClipboard
hook.
tsx
import { useClipboard } from "./useClipboard";
const APIKeys = [
{ id: 1, name: "API Key 1", value: "1234-5678-ABCD-EFGH" },
{ id: 2, name: "API Key 2", value: "IJKL-9876-MNOP-QRST" },
{ id: 3, name: "API Key 3", value: "UVWX-5432-YZAB-CDEF" },
];
export default function App() {
const { copiedText, copyToClipboard } = useClipboard();
const handleCopy = async (keyValue: string, keyName: string) => {
try {
await copyToClipboard(keyValue);
alert(`Copied: ${keyName}`);
} catch (e) {
alert("Failed to copy:");
}
};
return (
<ul>
{APIKeys.map((key) => (
<li key={key.id}>
<div>
<p>{key.name}</p>
<p>{key.value}</p>
</div>
<button onClick={() => handleCopy(key.value, key.name)}>
{copiedText === key.value ? "Copied!" : "Copy"}
</button>
</li>
))}
</ul>
);
}
typescript
import { useState } from "react";
export const useClipboard = () => {
const [copiedText, setCopiedText] = useState<string | null>("");
const copyToClipboard = async (value: string) => {
try {
if (navigator?.clipboard?.writeText) {
await navigator.clipboard.writeText(value);
setCopiedText(value);
} else {
throw new Error("Clipboard not supported");
}
} catch (e) {
setCopiedText(null);
throw new Error(e instanceof Error ? e.message : "Unknown error");
}
};
return { copiedText, copyToClipboard };
};