diff --git a/src/hooks/web/useWatermark.ts b/src/hooks/web/useWatermark.ts index 4a24da0..a8e0b85 100644 --- a/src/hooks/web/useWatermark.ts +++ b/src/hooks/web/useWatermark.ts @@ -4,8 +4,13 @@ import { addResizeListener, removeResizeListener } from '@/utils/event' import { isDef } from '@/utils/is' const domSymbol = Symbol('watermark-dom') +const sourceMap = new WeakMap() export function useWatermark(appendEl: Ref = ref(document.body) as Ref) { + const appendElRaw = unref(appendEl) + if (appendElRaw && sourceMap.has(appendElRaw)) { + return sourceMap.get(appendElRaw) + } const func = useRafThrottle(function () { const el = unref(appendEl) if (!el) return @@ -80,6 +85,7 @@ export function useWatermark(appendEl: Ref = ref(document.bo const { clientHeight: height, clientWidth: width } = el updateWatermark({ str, width, height }) el.appendChild(div) + sourceMap.set(el, { setWatermark, clear }) return id }