-
+
@@ -33,14 +33,16 @@
-
-
+
+
+
+
+
+ {{ noMore ? '没有更多收藏了' : '加载更多' }}
+
+
+
+
@@ -49,6 +51,7 @@ import { ref, onMounted } from 'vue';
import { useStore } from 'vuex';
import { useRoute } from 'vue-router';
import { useDialog } from 'naive-ui';
+import InfiniteLoading from "v3-infinite-loading";
import { getCollections, followUser, unfollowUser } from '@/api/user';
const store = useStore();
@@ -56,6 +59,7 @@ const route = useRoute();
const dialog = useDialog();
const loading = ref(false);
+const noMore = ref(false);
const list = ref
([]);
const page = ref(+(route.query.p as any) || 1);
const pageSize = ref(20);
@@ -118,21 +122,34 @@ const loadPosts = () => {
getCollections({
page: page.value,
page_size: pageSize.value,
- })
- .then((rsp) => {
- loading.value = false;
- list.value = rsp.list;
- totalPage.value = Math.ceil(rsp.pager.total_rows / pageSize.value);
-
+ }).then((res) => {
+ loading.value = false;
+ if (res.list.length === 0) {
+ noMore.value = true
+ }
+ if (page.value > 1) {
+ list.value = list.value.concat(res.list);
+ } else {
+ list.value = res.list;
window.scrollTo(0, 0);
- })
- .catch((err) => {
- loading.value = false;
- });
+ }
+ totalPage.value = Math.ceil(res.pager.total_rows / pageSize.value);
+ })
+ .catch((_err) => {
+ loading.value = false;
+ if (page.value > 1) {
+ page.value--
+ }
+ });
};
-const updatePage = (p: number) => {
- page.value = p;
- loadPosts();
+const nextPage = () => {
+ if (page.value < totalPage.value || totalPage.value == 0) {
+ noMore.value = false;
+ page.value++;
+ loadPosts();
+ } else {
+ noMore.value = true;
+ }
};
onMounted(() => {
loadPosts();
@@ -140,11 +157,21 @@ onMounted(() => {