Преглед на файлове

fix: 获取已存在的 key,避免重复写入刷新过期时间

layhuts преди 1 месец
родител
ревизия
1299acd8f9
променени са 1 файла, в които са добавени 12 реда и са изтрити 5 реда
  1. 12 5
      packages/effects/plugins/src/vxe-table/use-viewed-row.ts

+ 12 - 5
packages/effects/plugins/src/vxe-table/use-viewed-row.ts

@@ -95,12 +95,19 @@ function createIndexedDBAdapter(
     async setKeys(keys) {
       try {
         const newKeySet = new Set(keys.map(String));
-        // 先写入新数据,确保数据安全落盘
-        await Promise.all(
-          keys.map((key) => manager.setItem(String(key), key, opts.ttl)),
-        );
-        // 再清理不在新集合中的旧 key
+        // 获取已存在的 key,避免重复写入刷新过期时间
         const existingKeys = await manager.keys();
+        const existingKeySet = new Set(existingKeys);
+
+        // 只写入新增的 key,不覆盖已有记录的过期时间
+        const toAdd = keys.filter((key) => !existingKeySet.has(String(key)));
+        if (toAdd.length > 0) {
+          await Promise.all(
+            toAdd.map((key) => manager.setItem(String(key), key, opts.ttl)),
+          );
+        }
+
+        // 清理不在新集合中的旧 key
         const toRemove = existingKeys.filter((k) => !newKeySet.has(k));
         if (toRemove.length > 0) {
           await Promise.all(toRemove.map((k) => manager.removeItem(k)));