让你的微信小程序对用户更加友好:上拉加载和下拉刷新就是关键

这篇具有很好参考价值的文章主要介绍了让你的微信小程序对用户更加友好:上拉加载和下拉刷新就是关键。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

上拉加载和下拉刷新是小程序开发的常见需求。本文将介绍如何在微信小程序中实现上拉加载和下拉刷新的功能,为用户带来更加流畅、便捷的使用体验。


实现效果如下:

让你的微信小程序对用户更加友好:上拉加载和下拉刷新就是关键


实现思路:

1. 首先需要在使用到的 json 文件下配置 "enablePullDownRefresh": true

{
   "usingComponents": {},
   "enablePullDownRefresh": true,
}

2. 在 js 文件中加上触底函数跟上拉函数

//触底函数
onReachBottom(){
    console.log("上拉加载....");
},
//上拉函数
onPullDownRefresh(){
    console.log("下拉刷新...");
},

3. 请求接口,将新请求的数据通过 cancat 方法合并到 list 数组中,然后更新数据

注: concat() 方法用于连接两个或多个数组

this.data.page++;
let list = that.data.list.concat(res.data.data.rows)
that.setData({
    list: list,
    loading: false,
});

4. 对数据进行判断,如果列表数据条数小于总条数,隐藏 “正在加载” 字样,显示 “已加载全部” 字样

if (res.data.data.rows.length < this.data.limit) {
    that.setData({
        loading: false,
        loaded: true,
    });
}

5. 上拉加载时,改变文字状态,然后调用接口

let that = this;
if (!that.data.loading) {
    that.setData({
        loading: true,
        loaded: false 
    });
}
setTimeout(function () {
    that.licensePort();
}, 500)

6. 下拉刷新时,将页码重置为 1 然后再次调用接口即可,但是不要忘了刷新完成后要关闭刷新的操作:wx.hideNavigationBarLoading()wx.stopPullDownRefresh()

 this.data.list = []
 wx.showNavigationBarLoading() 
 this.setData({
     page: 1
 });
 this.licensePort(); 
 setTimeout(function () {
     wx.showToast({
         title: '刷新成功',
         icon: 'none',
         duration: 1000
     })
     wx.hideNavigationBarLoading() 
     wx.stopPullDownRefresh() 
 }, 1000)

其他你可能关注的配置:

json文件中:

1. backgroundTextStyle: light // 刷新时三个点的颜色,只能是 light 或者 dark

让你的微信小程序对用户更加友好:上拉加载和下拉刷新就是关键

2. backgroundColor: #FC1944 // 刷新时背景的颜色

让你的微信小程序对用户更加友好:上拉加载和下拉刷新就是关键

js文件中:

3.wx.showNavigationBarLoading() // 在标题栏中显示加载

让你的微信小程序对用户更加友好:上拉加载和下拉刷新就是关键


各文件完整代码如下:

wxml文件

<!-- 内容 -->
<view class="navBox" wx:for="{{list}}" wx:key="index">
    <view><text class="lableBox">区县</text><text>{{item.dqbm}}</text></view>
    <view><text class="lableBox">联系人</text> <text>{{item.lxr}}</text></view>
    <view><text class="lableBox">电话</text> <text>{{item.lxdh}}</text></view>
    <view><text class="lableBox">地址</text> <text>{{item.qydz}}</text></view>
</view>
<!-- 加载时文字 -->
<view class="bomTxt">
    <view hidden="{{!loading}}">正在加载...</view>
    <view hidden="{{!loaded}}">已加载全部</view>
</view>

js文件

//获取应用实例
var app = getApp();
Page({
    data: {
        page: 1, //当前第几页
        limit: 10, //一页展示几条
        list: [], //所有数据
        loading: false, //是否展示 “正在加载” 字样
        loaded: false //是否展示 “已加载全部” 字样
    },
    //生命周期函数--监听页面加载
    onLoad: function (options) {
        this.informPort(); //调用接口方法
    },
    // 企业信息接口
    informPort() {
        var that = this; // //防止this指向问题
        // 后台需要的参数
        app.http.informPort({
            qymc: "",
            page: this.data.page,
            limit: this.data.limit,
        }).then(res => {
            if (res.data.code == '10000') {
                if (res.data.data.records && res.data.data.records.length > 0) {
                    // console.log("请求成功", res.data.data.records)
                    that.data.page++
                    //新请求的数据通过cancat方法合并到list数组中
                    let list = that.data.list.concat(res.data.data.records)
                    // 更新数据
                    that.setData({
                        list: list,
                        loading: false,
                    });
                    //如果列表数据条数小于总条数,隐藏 “正在加载” 字样,显示 “已加载全部” 字样
                    if (res.data.data.records.length < that.data.limit) {
                        that.setData({
                            loading: false,
                            loaded: true,
                        });
                    }
                } else {
                    that.setData({
                        loaded: true, //显示 “没有数据” 字样 
                        loading: false //隐藏 “正在加载” 字样
                    });
                }
            }
        })
    },
    // 触底函数---上拉加载
    onReachBottom() {
        let that = this; //防止this指向问题
        if (!that.data.loading) {
            that.setData({
                loading: true, //加载中
                loaded: false //是否加载完所有数据
            });
        }
        //延时调用接口
        setTimeout(function () {
            that.informPort();
        }, 500)
    },
    // 上拉函数---下拉刷新
    onPullDownRefresh() {
     	this.data.list = []
        wx.showNavigationBarLoading() //在标题栏中显示加载圈圈
        this.setData({
            page: 1
        }); //重置页码
        app.http.informPort().then(res => {
            if (res.data.code == '10000') {
                setTimeout(function () {
                    wx.showToast({
                        title: '刷新成功',
                        icon: 'none',
                        duration: 1000
                    })
                    wx.hideNavigationBarLoading() //完成停止加载
                    wx.stopPullDownRefresh() //停止下拉刷新
                }, 1000)
            } else if (res.data.code != 10000) {
                setTimeout(function () {
                    wx.showToast({
                        title: '刷新失败',
                        icon: 'none',
                        duration: 1000
                    })
                    wx.hideNavigationBarLoading() //完成停止加载
                    wx.stopPullDownRefresh() //停止下拉刷新
                }, 1000)
            }
        })
    }
})

wxss文件

page {
    background: #EFF4FF;
}

.navBox {
    margin: 2.5%;
    font-size: 14px;
    border-radius: 36rpx;
    background: white;
}

.lableBox {
    display: inline-block;
    width: 90px;
    text-align: right;
    margin-right: 30rpx;
}

.navBox view {
    padding: 24rpx 30rpx;
}

.navBox view:not(:last-child) {
    border-bottom: 1px solid rgb(235, 237, 239);
}

.bomTxt {
    display: flex;
    justify-content: center;
    font-size: 12px;
    color: rgb(126, 138, 155);
    padding: 0rpx 0rpx 20rpx 0rpx;
}

json文件

{
  "usingComponents": {},
  "navigationBarBackgroundColor": "#6197FB",
  "navigationBarTitleText": "企业信息",
  "enablePullDownRefresh": true,
  "backgroundTextStyle": "light",
  "backgroundColor": "#6197FB"
}

相关推荐

⭐ 【完全指南】vue+vant实现上拉加载下拉刷新,加速你的页面响应速度文章来源地址https://www.toymoban.com/news/detail-507459.html

到了这里,关于让你的微信小程序对用户更加友好:上拉加载和下拉刷新就是关键的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 好的代码风格,如同书法,让你的代码更加漂亮

    很多初学者的代码其实都不够“漂亮”,那是因为没有养成好的编码习惯。本篇博客以C语言为例,总结一些好习惯。其实,很多习惯都是肌肉记忆,举个例子:请你写一个程序,输入2个整数并输出它们的和。有些朋友可能写出来是这个样子。 我写这段代码,是在模仿有些朋

    2024年02月01日
    浏览(38)
  • 华为云桌面Workspace,让你的办公更加舒适惬意

    在各行各业转型的过程中,企业对于线上办公的需求不断增多,越来越需要一个云办公平台,为企业更好实现数字化网络化办公降本增效。正逢佳节之际,在此为各大企业推荐一个高效的办公神器——华为云桌面Workspace。相信作为企业决策者的你们在了解这款产品的优势后会

    2024年02月13日
    浏览(31)
  • 推荐5款让你的电脑更加有趣的小工具

    今天推荐的都是一些让你的电脑更加有趣的小工具,喜欢的可以自行在搜索引擎搜索下载。 TranslucentTB是一款用于电脑任务栏美化的软件,可以将Windows 10的任务栏设置成透明模式,透明状态下的任务栏,搭配一张好看的壁纸,视觉效果将超乎你的想象。这款软件本身的操作也

    2024年02月13日
    浏览(36)
  • 点击器自动点击器,让你的屏幕操作变得更加简单

    点击器自动点击器,也被称为屏幕点击器或鼠标连点器,是一种能够模拟人类点击行为的工具。它可以在特定时间间隔内自动执行鼠标点击操作,来代替用户手动点击屏幕。这种工具通常运行在Windows、MacOS和Linux等操作系统上,并可以与其他软件集成使用。   以下是本文的主

    2024年02月09日
    浏览(43)
  • 快速搭建API随心搭,让你的web开发更加高效

    随着互联网的发展,越来越多的应用和服务需要通过API接口来实现。API(Application Programming Interface,应用程序编程接口)可以理解为两个软件之间的桥梁,通过API接口,两个软件可以相互交流并进行数据交换。如今,API已经成为许多公司和应用程序的核心,因此快速搭建并管

    2024年02月08日
    浏览(39)
  • LoadRunner参数化最佳实践:让你的性能测试更加出色!

    距离上次使用loadrunnr 已经有一年多的时间了。初做测试时在项目中用过,后面项目中用不到,自己把重点放在了工具之外的东西上,认为性能测试不仅仅是会用工具,最近又想有一把好的利器毕竟可以帮助自己更好的完成性能测试工作。这算是一个认知的过程吧! 在次安装

    2023年04月25日
    浏览(40)
  • 什么是CI/CD?让你的项目变得更加敏捷!

    在今天这个快速变化的时代,开发者们需要与时俱进,不断提升自己的工作效率。在这篇文章里,将一起探讨 如何使用CI/CD和Github Action让你的项目更加高效,快速响应市场变化。 CI(持续集成,Continuous Integration)是一种软件开发实践,它要求开发者频繁地将代码集成到共享

    2024年02月16日
    浏览(35)
  • 不用GPT4,如何让你的AI助理更加智能

    小伙伴们新年好啊,颓废的 2023 年总算是过去了,过去这一年因为自己的状态不太好,一直也没怎么更新,2024 年是时候重新拾起行囊再出发啦! 去年年底我写过一篇《大模型小助手,Mac 工程师如何拥有自己的人工智能》,在那篇文章里我介绍了如何利用自己手头的计算资源

    2024年02月22日
    浏览(28)
  • 五大优化技巧,让你的视频直播app源码更加流畅

    视频直播app源码在确保流畅体验方面是至关重要的。为了提升性能,以下是几项关键的优化技巧: 使用轻量级编码器和解码器 :选择高效的编码器和解码器,以减少资源占用,并确保视频流畅播放。 优化视频分辨率和比特率 :根据用户设备和网络条件,适当调整视频分辨率

    2024年02月09日
    浏览(33)
  • 华为手机录屏全攻略,让你的录制更加顺畅

    “求助!华为手机录屏在哪里呀,有人知道吗?平时不用的时候也看见过,就没在意,现在需要用到录屏了,却找不到了,真的很头疼,有没有人了解的,教教我。” 随着智能手机的普及和移动娱乐需求的增长,越来越多的用户开始关注手机录屏功能。手机录屏可以帮助用户

    2024年02月04日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包