From f27cb5c7033b7f6a55c8ae07733ab0e1a4ffe7af Mon Sep 17 00:00:00 2001 From: Tim <135014430+nagisa77@users.noreply.github.com> Date: Sat, 16 Aug 2025 18:13:37 +0800 Subject: [PATCH] feat: remember home tab selection --- frontend_nuxt/pages/index.vue | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/frontend_nuxt/pages/index.vue b/frontend_nuxt/pages/index.vue index bb8eee891..6fac06194 100644 --- a/frontend_nuxt/pages/index.vue +++ b/frontend_nuxt/pages/index.vue @@ -147,9 +147,17 @@ const categoryOptions = ref([]) const isLoadingMore = ref(false) const topics = ref(['最新回复', '最新', '排行榜' /*, '热门', '类别'*/]) +const selectedTopicCookie = useCookie('homeTab') const selectedTopic = ref( - route.query.view === 'ranking' ? '排行榜' : route.query.view === 'latest' ? '最新' : '最新回复', + selectedTopicCookie.value + ? selectedTopicCookie.value + : route.query.view === 'ranking' + ? '排行榜' + : route.query.view === 'latest' + ? '最新' + : '最新回复', ) +if (!selectedTopicCookie.value) selectedTopicCookie.value = selectedTopic.value const articles = ref([]) const page = ref(0) const pageSize = 10 @@ -175,6 +183,11 @@ onMounted(() => { const { category, tags } = route.query if (category) selectedCategorySet(category) if (tags) selectedTagsSet(tags) + + const saved = localStorage.getItem('homeTab') + if (saved) { + selectedTopic.value = saved + } }) /** 路由变更时同步筛选 **/ @@ -340,9 +353,13 @@ watch( watch([selectedCategory, selectedTags], () => { loadOptions() }) -watch(selectedTopic, () => { +watch(selectedTopic, (val) => { // 仅当需要额外选项时加载 loadOptions() + selectedTopicCookie.value = val + if (process.client) { + localStorage.setItem('homeTab', val) + } }) /** 选项首屏加载:服务端执行一次;客户端兜底 **/