diff --git a/src/hooks/request/useSearch.ts b/src/hooks/request/useSearch.ts new file mode 100644 index 0000000..e3e5f12 --- /dev/null +++ b/src/hooks/request/useSearch.ts @@ -0,0 +1,39 @@ +import { fetchHistory as fetchHistoryApi } from '@/api/history'; +import { hotSearch } from '@/api/home'; +import type { HotSearch } from '@/api/types/hotSearch'; +import { ref } from 'vue'; + +// function useFetchKeywordResult(keyword: string) { +// // 历史列表 +// const history = ref>(new Set()); +// // 从服务器接受的列表内容 +// const list = ref([]); + +// const { data } = await hotSearch(); +// list.value = data.data; + +// return { list }; +// } + +// 初始化历史 +function fetchHistory() { + const history = ref([]); + + // 屏蔽从storage获取记录的方式 + // const historyStr = localStorage.getItem('history') + // if (historyStr) { + // history.value = new Set(JSON.parse(historyStr)) + // } else { + // history.value = new Set() + // } + + fetchHistoryApi().then(({ data }) => { + data.data.forEach((item: { id: number; keyword: string }) => { + history.value.push(item.keyword); + }); + }); + + return { history }; +} + +export { fetchHistory }; diff --git a/src/views/HomeSearch/Hooks/useSurveySearch.ts b/src/views/HomeSearch/Hooks/useSurveySearch.ts index 7981c1b..af8acd5 100644 --- a/src/views/HomeSearch/Hooks/useSurveySearch.ts +++ b/src/views/HomeSearch/Hooks/useSurveySearch.ts @@ -60,6 +60,9 @@ async function updateKeyword(key?: string) { // 排除边界条件 if (!keyword.value) { + // 清空字符内容,重新获取历史,关闭 loading 状态 + keyword.value = ''; + banners.value = []; initialHistory() loading.value = false; return; @@ -87,7 +90,7 @@ function updatePageCount(value: number) { watch(keyword, async () => { dirty.value = true; // 重新获取数据 - // await handleSearch(); + await handleSearch(); }); // 索引变动之后,立刻进行搜索 (没有进行防抖) diff --git a/src/views/HomeSearch/Index.vue b/src/views/HomeSearch/Index.vue index ee02e31..71b7e55 100644 --- a/src/views/HomeSearch/Index.vue +++ b/src/views/HomeSearch/Index.vue @@ -6,12 +6,11 @@ import { handleSearch, keyword, loading } from '@/views/HomeSearch/Hooks/useSurv import Layout from '@/components/Layout/CommonLayout.vue'; import { visible } from '@/views/HomeSearch/Hooks/useHomeSearch'; import RecommendTag from '@/views/HomeSearch/components/Recommend/Index.vue'; -import { onMounted } from 'vue'; +import { onMounted, type Ref } from 'vue'; import ImageSlider from '../Home/components/ImageSlider/Index.vue'; import { banners } from '@/views/HomeSearch/Hooks/useSurveySearch'; -// 确保 keyword 是字符串类型,提供默认值 -const searchKeyword = keyword.value || ''; +const searchKeyword = keyword as Ref; onMounted(() => { // 当页面取消挂载时,重置页面展示的状态 @@ -25,7 +24,7 @@ onMounted(() => { - +
diff --git a/src/views/HomeSearch/components/MineSurvey/Index.vue b/src/views/HomeSearch/components/MineSurvey/Index.vue index d16d36b..808f4f8 100644 --- a/src/views/HomeSearch/components/MineSurvey/Index.vue +++ b/src/views/HomeSearch/components/MineSurvey/Index.vue @@ -1,7 +1,13 @@