From 3b0077dc73772a460684b5ae5807c5bf511bd757 Mon Sep 17 00:00:00 2001
From: 予ヾ <59309934+wh-if@users.noreply.github.com>
Date: 星期二, 14 三月 2023 17:06:25 +0800
Subject: [PATCH] fix: 修复水印重复叠加问题 (#2622)

---
 src/hooks/web/useWatermark.ts |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/src/hooks/web/useWatermark.ts b/src/hooks/web/useWatermark.ts
index a42b84b..5840c14 100644
--- a/src/hooks/web/useWatermark.ts
+++ b/src/hooks/web/useWatermark.ts
@@ -4,10 +4,15 @@
 import { isDef } from '/@/utils/is';
 
 const domSymbol = Symbol('watermark-dom');
+const sourceMap = new WeakMap<HTMLElement, {}>();
 
 export function useWatermark(
   appendEl: Ref<HTMLElement | null> = ref(document.body) as Ref<HTMLElement>,
 ) {
+  const appendElRaw = unref(appendEl);
+  if (appendElRaw && sourceMap.has(appendElRaw)) {
+    return sourceMap.get(appendElRaw);
+  }
   const func = useRafThrottle(function () {
     const el = unref(appendEl);
     if (!el) return;
@@ -82,6 +87,7 @@
     const { clientHeight: height, clientWidth: width } = el;
     updateWatermark({ str, width, height });
     el.appendChild(div);
+    sourceMap.set(el, { setWatermark, clear });
     return id;
   };
 

--
Gitblit v1.8.0