ansnid-anse/src/hooks/useCopy.ts

21 lines
506 B
TypeScript
Raw Normal View History

2023-06-04 15:55:58 +08:00
import { createEffect, createSignal } from 'solid-js'
import { writeClipboard } from '@solid-primitives/clipboard'
export const useClipboardCopy = (source: string, delay = 1000) => {
const [copied, setCopied] = createSignal(false)
const copy = async() => {
writeClipboard(source)
setCopied(true)
}
createEffect(() => {
if (copied()) {
const timer = setTimeout(() => setCopied(false), delay)
return () => clearTimeout(timer)
}
})
return [copied, copy] as const
}