From 0e01f2bdaa34df66919ff374eb66694a578abcfa Mon Sep 17 00:00:00 2001 From: BTMuli Date: Sun, 15 Jun 2025 15:34:38 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=E6=B5=AE=E7=AA=97=E8=A7=A6?= =?UTF-8?q?=E5=BA=95=E5=8A=A0=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/viewPost/vp-overlay-follow.vue | 21 ++++++++-- src/components/viewPost/vp-overlay-search.vue | 25 ++++++------ src/components/viewPost/vp-overlay-user.vue | 25 ++++++------ src/hooks/reachBottom.ts | 38 ++++++++++++++++++- 4 files changed, 83 insertions(+), 26 deletions(-) diff --git a/src/components/viewPost/vp-overlay-follow.vue b/src/components/viewPost/vp-overlay-follow.vue index 103af751..10be6831 100644 --- a/src/components/viewPost/vp-overlay-follow.vue +++ b/src/components/viewPost/vp-overlay-follow.vue @@ -10,9 +10,8 @@
刷新 - 加载更多
-
+
("listRef"); +const { isReachBottom } = useBoxReachBottom(listEl); + const visible = defineModel(); + const offset = ref(); const isLast = ref(false); const loading = ref(false); const posts = shallowRef>([]); +watch( + () => isReachBottom.value, + async () => { + if (!isReachBottom.value) return; + await loadMore(); + }, +); watch( () => visible.value, async () => { @@ -71,6 +83,9 @@ async function loadMore(refresh: boolean = false): Promise { else posts.value = posts.value.concat(resp.list); loading.value = false; showSnackbar.success(`成功加载${resp.list.length}条数据`); + if (refresh && listEl.value) { + listEl.value.scrollTo({ top: 0, behavior: "smooth" }); + } } diff --git a/src/components/viewPost/vp-overlay-user.vue b/src/components/viewPost/vp-overlay-user.vue index acbb8507..f101ad10 100644 --- a/src/components/viewPost/vp-overlay-user.vue +++ b/src/components/viewPost/vp-overlay-user.vue @@ -21,16 +21,13 @@
- - 加载更多({{ results.length }}) -
ID:{{ userInfo.uid }} IP:{{ userInfo.ip_region }}
-
+
("listRef"); +const { isReachBottom } = useBoxReachBottom(listEl); + const props = defineProps(); const visible = defineModel(); const offset = ref(); @@ -69,6 +70,13 @@ const levelColor = computed(() => { return "var(--tgc-od-white)"; }); +watch( + () => isReachBottom.value, + async () => { + if (!isReachBottom.value) return; + await loadPosts(); + }, +); watch( () => visible.value, async () => { @@ -117,6 +125,7 @@ async function loadPosts(): Promise { isLast.value = resp.is_last; results.value = results.value.concat(resp.list); load.value = false; + showSnackbar.success(`成功加载${resp.list.length}条数据`); }