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) {