uniapp上拉分页加载更多(微信小程序)

uniapp列表分页需要做上拉加载更多

一、html和样式布局

data中定义的初始化数据:

html布局:

<scroll-view class="law_main" scroll-y="true" @scrolltolower="lower" lower-threshold="50" refresher-enabled
                :refresher-triggered="triggered" @refresherrefresh="onRefresh">
                <view v-for="(item, index) in dataList" :key="index" class="content">
                 {{写样式代码......}}
                </view>
            </scroll-view>

重要的函数:

    //上拉加载更多
            lower(e) {
                if (this.pageNum < this.totalPage) {
                    this.pageNum += 1;
                    //获取list列表接口
                    this.getData();
                }
            },
            //自定义上拉刷新
            onRefresh() {
                if (!this.triggered) {
                    if (this.isfreshing) return;
                    this.isfreshing = true;
                    if (!this.triggered) {
                        this.triggered = true;
                    }
                    this.showMoreData = false;
                    this.emptyData = false;
                    this.dataList = [];
                    this.pageNum = 1;
                    this.getData();
                }
            },
            //获取list数据
            getData() {
                let params = {
                    current: this.pageNum,
                    size: this.pageSize,
                };
                uni.showLoading({
                    title: "正在加载",
                });
                try {

                        //发送请求
                    exam.answerList(params).then((res) => {
                        if (this.pageNum == 1) {
                            this.dataList = res.data.records;
                            this.triggered = false;
                            this.isfreshing = false;
                        } else {
                            this.dataList = this.dataList.concat(res.data.records);
                        }

                        //这一步显示没有更多数据了...
                        // if (this.dataList.length == res.data.total && this.dataList.length > 20) {
                        //     this.showMoreData = true;
                        // }
                        res.data.total == this.pageSize ?
                            (this.totalPage = 1) :
                            (this.totalPage = parseInt(res.data.total / this.pageSize + 1));
                        if (!this.dataList.length) {
                            this.emptyData = true;
                            this.showMoreData = false;
                        }
                        uni.hideLoading();
                    });
                } catch (error) {
                    uni.hideLoading();
                }
            }, 

css样式: 


        .law_main {
            height: calc(100vh - 330rpx);
            overflow-y: scroll;
            padding-top: 80rpx;

            .content {
                width: 100vw;
                display: flex;
                color: #fff;
                font-size: 24rpx;
                line-height: 90rpx;
            }
        }

  • 10
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信小程序的上分页查询可以通过使用小程序原生组件 `scroll-view` 和 `onReachBottom` 事件来实现。 首先,在 `wxml` 中使用 `scroll-view` 组件来实现滚动条,并使用 `wx:for` 绑定数据列表: ```html <scroll-view scroll-y="true" bindscrolltolower="onReachBottom"> <view wx:for="{{list}}" wx:key="id"> <!-- 展示数据 --> </view> </scroll-view> ``` 然后,在 `js` 中监听 `onReachBottom` 事件,在触发事件时,向后端请求下一页数据,并将新数据与已有数据合并: ```javascript Page({ data: { list: [], // 已有数据列表 page: 1, // 当前页数 pageSize: 10 // 每页数据量 }, onReachBottom() { wx.showLoading({ title: '中', mask: true }) // 请求下一页数据 api.getList(this.data.page + 1, this.data.pageSize).then(res => { wx.hideLoading() const newList = res.data.list if (newList.length) { // 如果有新数据 this.setData({ list: [...this.data.list, ...newList], // 合并数据 page: this.data.page + 1 // 新页数 }) } else { // 如果没有新数据,说明已经完毕 wx.showToast({ title: '已经到底了', icon: 'none' }) } }).catch(() => { wx.hideLoading() wx.showToast({ title: '失败,请重试', icon: 'none' }) }) } }) ``` 这样就可以实现微信小程序的上分页查询了。需要注意的是,在请求数据时需要显示提示,避免用户误以为程序出现了问题。同时,如果没有新数据,需要提示用户已经到底了,避免用户不必要的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值