uniapp+vue3 使用list触底+下拉

点击查看代码
<template>
    <view class="coinCenter">
        <scroll-view
            scroll-y="true"
            :refresher-enabled="true"
            :refresher-triggered="retriggered"
            :style="`height:${scrcvh}px`"
            class="scrv"
            @refresherrefresh="onRefresh"
            @scrolltolower="lower"
        >
            <uni-list class="listpre">
                <uni-list-item v-for="(item, index) in firstList" :key="index">
                    <template v-slot:header>
                        <view>
                            {{ item.source }}
                        </view>
                        <view>过期时间: {{ item.expire_text }}</view>
                    </template>
                    <template v-slot:footer>
                        <view class="expritx">+{{ item.coins }}</view>
                    </template>
                </uni-list-item>
            </uni-list>
        </scroll-view>
    </view>
</template>

<script setup>
import { ref, reactive, nextTick } from 'vue'
import { onLoad, onReady } from '@dcloudio/uni-app'
let app = getApp()
let scrcvh = ref(0)
let retriggered = ref(false)
let isFinished = ref(false)
let firstList = ref([])
let pageNum = ref(1)
let onRefresh = async (e) => {
    retriggered.value = true
    pageNum.value = 1
    isFinished.value = false
    await getDataList()
    retriggered.value = false
}
let lower = async (e) => {
    pageNum.value++
    if (!isFinished.value) {
        await getDataList(1, 15, 'add')
    }
}
let getSysHeight = () => {
    uni.getSystemInfo({
        success: (res) => {
            scrcvh.value = res.windowHeight - 20
        }
    })
}
let getDataList = async (type = 1, limit = 15, isAdd) => {
    try {
        let { data } = await app.globalData.api.index.getList({
            bodyData: {
                m: 'tiktok',
                c: 'Coins',
                a: 'getCoinsLog',
                type,
                page: pageNum.value,
                limit,
                debug_user_id: 728,
                respons_type: 'json'
            }
        })
        if (data.code === 1 && data.data.list.length > 0) {
            if (isAdd === 'add') {
                firstList.value = firstList.value.concat(data.data.list)
            } else {
                firstList.value = data.data.list
            }
        } else {
            isFinished.value = true
            uni.showToast({
                title: '已加载全部'
            })
        }
    } catch (err) {
        //TODO handle the exception
    }
}
onLoad(async () => {
    await getSysHeight()
})
onReady(async () => {
    await getDataList()
})
</script>

<style lang="scss">
.coinCenter {
    display: flex;
    flex-direction: column;
    padding: 20rpx;
}
.scrv {
}
.listpre {
    width: 100%;
    height: 100%;
    background-color: pink;
}
.expritx {
    font-size: 14px;
    font-weight: 600;
    color: #fed861;
}
</style>

posted @   jialiangzai  阅读(35)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!

喜欢请打赏

扫描二维码打赏

微信打赏

点击右上角即可分享
微信分享提示