uniapp结合mescroll-uni插件实现下拉刷新和上拉加载

  • 原创
  • 作者:程序员三丰
  • 发布时间:2021-07-30 10:06
  • 浏览量:929
mescroll的uni版本, 是专门用在uni-app的下拉刷新和上拉加载的组件, 支持一套代码编译到iOS、Android、H5、小程序等多个平台,可以自动处理分页, 自动控制无数据, 空布局提示等。而且官方提供了丰富的案例, 自由灵活的api, 超详细的注释, 可让您快速自定义真正属于自己的下拉上拉组件。

uniapp结合mescroll-uni插件实现下拉刷新和上拉加载

mescroll介绍

实践应用场景

  • 基于uniapp + colorui + uview开发,打包微信小程序,测试通过,使用简单,性能不错,推荐使用。

代码分享(以评论回复列表为示例)

  • 模版部分

    <template>
        <view class="page">
            <!-- 其它代码 -->
            <mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :up="upOption">
                <!-- @init="mescrollInit" @down="downCallback" @up="upCallback"为固定值,不可删改(与mescroll-mixins保持一致) -->
                <!-- 需要更新的数据代码 -->
            </mescroll-body>
            <!-- 其它代码 -->
        </view>
    </template>
    

    特别注意 fixed元素需写在mescroll-body的外面,否则下拉刷新时会降级为absolute

  • JS部分

    <script>
        import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
        export default {
            mixins: [MescrollMixin],
            data() {
                return {
                    replyList: [],
                    upOption: {
                        page: {
                            size: 10 // 每页数据的数量,默认10
                        },
                        empty: {
                            use: true,
                            tip: "暂无相关数据。",
                        }
                    },
                }
            },
            methods: {
                /*下拉刷新的回调*/
                downCallback() {
                    this.mescroll.resetUpScroll();
                },
                /*上拉加载的回调*/
                upCallback(page) {
                    let pageNum = page.num; // 页码, 默认从1开始
                    let pageSize = page.size; // 页长, 默认每页10条
                    this.render(pageNum, pageSize)
                },
                render(page, limit) {
                    this.$u.api.courseCommentDetails({
                            course_id: this.courseId,
                            comment_id: this.commentId,
                            page: page,
                            limit: limit
                        })
                        .then(data => {
                            // 接口返回的当前页数据列表 (数组)
                            let curPageData = data.replies;
    
                            // 接口返回的当前页数据长度 (如列表有26个数据,当前页返回8个,则curPageLen=8)
                            let curPageLen = curPageData.length;
    
                            // 接口返回的总数据量(如列表有26个数据,每页10条,共3页; 则totalSize=26)
                            let totalSize = data.totals;
    
                            //设置列表数据
                            if (page == 1) this.replyList = []; //如果是第一页需手动置空列表
                            this.replyList = this.replyList.concat(curPageData); //追加新数据
    
                            // 请求成功,隐藏加载状态
                            this.mescroll.endBySize(curPageLen, totalSize);
                        })
                        .catch(res => {});
                },
            }
        }
    </script>
    

    以上应该是最简洁的实现代码了~~

声明:本文为原创文章,51blog.xyz和作者拥有版权,如需转载,请注明来源于51blog.xyz并保留原文链接:https://www.51blog.xyz/article/16

文章归档

强烈推荐的PHP全栈开发后台管理系统
buildadmin logo
Thinkphp8 Vue3 Element PLus TypeScript Vite Pinia

🔥BuildAdmin是一个永久免费开源,无需授权即可商业使用,且使用了流行技术栈快速创建商业级后台管理系统。

推荐文章

热门标签

PHP ThinkPHP ThinkPHP5.1 Go Mysql Mysql5.7 Redis Linux CentOS7 Git HTML CSS CSS3 Javascript JQuery Vue LayUI VMware Uniapp 微信小程序 docker wiki Confluence7 学习笔记 uView ES6 Ant Design Pro of Vue React ThinkPHP6.0 chrome 扩展 翻译工具 Nuxt SSR 服务端渲染 scrollreveal.js ThinkPHP8.0 Mac webman 跨域CORS vscode GitHub ECharts Canvas vue3 three.js 微信支付 PHP全栈开发 Python AI 人工智能 AI辅助 工作经验 实战笔记