From 66a5a40482b0b309d673f86b4891ef9605c0bdcf Mon Sep 17 00:00:00 2001 From: falling Date: Mon, 17 Jun 2024 15:39:13 +0800 Subject: [PATCH] TorrentCardListView.vue MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 使用VInfiniteScroll --- src/views/discover/TorrentCardListView.vue | 41 ++++++++-------------- 1 file changed, 14 insertions(+), 27 deletions(-) diff --git a/src/views/discover/TorrentCardListView.vue b/src/views/discover/TorrentCardListView.vue index f0b3a2e9..57efba45 100644 --- a/src/views/discover/TorrentCardListView.vue +++ b/src/views/discover/TorrentCardListView.vue @@ -2,7 +2,6 @@ import _ from 'lodash' import type { Context } from '@/api/types' import TorrentCard from '@/components/cards/TorrentCard.vue' -import { debounce } from 'lodash' interface SearchTorrent extends Context { more?: Array @@ -127,16 +126,11 @@ onMounted(() => { }) groupedDataList.value = groupMap - window.addEventListener('scroll', handleScroll) -}) - -onBeforeUnmount(() => { - window.removeEventListener('scroll', handleScroll) }) // 只监听filterForm和groupedDataList的变化。因为displayDataList的变化不需要清空列表 -watch([filterForm,groupedDataList], filterData) -function filterData(){ +watch([filterForm, groupedDataList], filterData) +function filterData() { // 清空列表 dataList = [] displayDataList.value = [] @@ -182,20 +176,10 @@ function filterData(){ }) } -//滚到底部时,加载新的数据。 -const handleScroll = debounce(() => { - const bottomOffset = 50 // 距离底部多少像素开始加载 - const scrollTop = window.scrollY - const windowHeight = window.innerHeight - const documentHeight = document.documentElement.scrollHeight - if (scrollTop + windowHeight + bottomOffset >= documentHeight) { - loadMore() - } -}, 100) - -function loadMore() { - const itemsToMove = dataList.splice(0, 20); // 从 dataList 中获取最前面的 20 个元素 - displayDataList.value.push(...itemsToMove); +function loadMore({ done }: { done: any }) { + const itemsToMove = dataList.splice(0, 20) // 从 dataList 中获取最前面的 20 个元素 + displayDataList.value.push(...itemsToMove) + done('ok') } @@ -281,9 +265,12 @@ function loadMore() { -
-
- -
-
+ +