From 5ff88741398c463fa29365e5b4008b31881c3df7 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 27 Apr 2026 08:56:34 +0800 Subject: [PATCH] =?UTF-8?q?feat(h5):=20=E7=A7=8D=E7=B1=BB=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E9=A1=B5=EF=BC=88=E5=AD=90=E7=B1=BB=20Tab=20+=20?= =?UTF-8?q?=E6=9D=90=E6=96=99=E5=88=97=E8=A1=A8=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.7 --- frontend-h5/src/components/MaterialCard.vue | 34 ++++++ .../src/composables/useInfiniteScroll.js | 12 ++ frontend-h5/src/views/CategoryDetail.vue | 106 +++++++++++++++++- 3 files changed, 150 insertions(+), 2 deletions(-) create mode 100644 frontend-h5/src/components/MaterialCard.vue create mode 100644 frontend-h5/src/composables/useInfiniteScroll.js diff --git a/frontend-h5/src/components/MaterialCard.vue b/frontend-h5/src/components/MaterialCard.vue new file mode 100644 index 0000000..f6d2698 --- /dev/null +++ b/frontend-h5/src/components/MaterialCard.vue @@ -0,0 +1,34 @@ + + + diff --git a/frontend-h5/src/composables/useInfiniteScroll.js b/frontend-h5/src/composables/useInfiniteScroll.js new file mode 100644 index 0000000..5b06bc8 --- /dev/null +++ b/frontend-h5/src/composables/useInfiniteScroll.js @@ -0,0 +1,12 @@ +import { onMounted, onBeforeUnmount, ref } from 'vue' + +export function useInfiniteScroll(target, onLoad) { + const observer = ref(null) + onMounted(() => { + observer.value = new IntersectionObserver((entries) => { + if (entries[0].isIntersecting) onLoad() + }) + if (target.value) observer.value.observe(target.value) + }) + onBeforeUnmount(() => observer.value?.disconnect()) +} diff --git a/frontend-h5/src/views/CategoryDetail.vue b/frontend-h5/src/views/CategoryDetail.vue index 028f12b..1607d5f 100644 --- a/frontend-h5/src/views/CategoryDetail.vue +++ b/frontend-h5/src/views/CategoryDetail.vue @@ -1,2 +1,104 @@ - - + + + + +