From 52c1b9de996d12e63bc2774f502dad3cec08bc6c Mon Sep 17 00:00:00 2001 From: kevin Date: Sun, 12 Apr 2026 02:57:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B1=95=E5=BC=80=E5=85=B3=E9=97=AD=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E7=89=B9=E5=88=AB=E5=8D=A1=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/KeywordsCache.vue | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/views/KeywordsCache.vue b/src/views/KeywordsCache.vue index ea46a36..aa7081e 100644 --- a/src/views/KeywordsCache.vue +++ b/src/views/KeywordsCache.vue @@ -6,7 +6,7 @@ const loading = ref(true) const error = ref(null) const stats = ref({ size: 0, max_size: 10000 }) const items = ref([]) // 当前页数据 -const expandedUrls = ref(new Set()) +const expandedUrls = ref({}) // 使用普通对象存储展开状态,避免 Set 的响应式开销 const urlKeywords = ref({}) const loadingKeywords = ref(new Set()) const search = ref('') @@ -48,7 +48,9 @@ async function load() { items.value = data.items || [] // 默认全部展开 - items.value.forEach(item => expandedUrls.value.add(item.url)) + const expanded = {} + items.value.forEach(item => expanded[item.url] = true) + expandedUrls.value = expanded // 预加载当前页关键词 items.value.forEach(item => { if (item.keywords?.length) { @@ -97,12 +99,16 @@ function onSearch() { } async function toggleKeywords(url) { - if (expandedUrls.value.has(url)) { - expandedUrls.value.delete(url) + if (expandedUrls.value[url]) { + // 关闭:删除展开状态 + const newExpanded = { ...expandedUrls.value } + delete newExpanded[url] + expandedUrls.value = newExpanded return } - expandedUrls.value.add(url) + // 展开 + expandedUrls.value = { ...expandedUrls.value, [url]: true } if (urlKeywords.value[url]) return @@ -221,7 +227,7 @@ function truncateSnippet(text, maxLen = 200) {
- {{ expandedUrls.has(item.url) ? '▼' : '▶' }} + {{ expandedUrls[item.url] ? '▼' : '▶' }} -
+