更新记录

1.1(2024-12-20) 下载此版本

路径问题

1.0(2024-12-20) 下载此版本

微信公众号开发中,需要自定义下拉刷新时,微信浏览器下拉出现页面同时被向下弹性滑动造成下拉异常,此插件解决了这个问题,同时下拉刷新样式尽量与内置下拉刷新保持一致


平台兼容性

Vue2 Vue3
×
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
× × × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序 鸿蒙元服务
× × × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari

jack-refresh

使用方法

1、在页面中导入并注册

//导入
import Refresh from "@/components/jack-refresh/jack-refresh.vue"
...
//注册组件
components:{Refresh}
...
//使用
<Refresh domName=".list" :refreshing="isRefreshing" @pullDownRefresh="getList" @reachBottom="appendList" :pullThreshold="30"/>

参数说明

参数名 类型 说明 默认
domName string 要监听的下拉刷新的列表或组件的样式类名,如 .list 必须
refreshing boolean 需手动修改刷新状态,请求前赋值true,结束后赋值false即可 必须
pullThreshold number 下拉刷新触发阈值,数字单位为px 50

事件

事件名 说明
pullDownRefresh 触发下拉刷新后的回调
reachBottom 触底后的回调

使用案例

<template>
    <view class="content">
        <Refresh domName=".list" :refreshing="isRefreshing" @pullDownRefresh="getList" @reachBottom="appendList" :pullThreshold="30"/>
        <view class="list" :style="{height:(list.length>10?'auto':'95vh')}">
            <view class="list_item" v-for="i in list">
                {{i}}
            </view>
        </view>
    </view>
</template>

<script>
    import Refresh from "@/components/jack-refresh/jack-refresh.vue"
    export default {
        data() {
            return {
                list: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
                isRefreshing: false,
            }
        },
        onLoad() {

        },
        methods: {
            getList() {
                uni.showLoading({
                    title: '刷新中',
                    mask: false
                });
                this.isRefreshing = true
                this.testApi().then(res=>{
                    this.list = res
                    uni.hideLoading()
                    this.isRefreshing = false
                })
            },
            appendList() {
                uni.showLoading({
                    title: '加载更多',
                    mask: false
                });
                this.isRefreshing = true
                this.testApi().then(res=>{
                    this.list.push(...res)
                    uni.hideLoading()
                })
            },
            testApi() {
                return new Promise((res, err) => {
                    setTimeout(() => {
                        res([2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,,2,2])
                    }, 2000)
                })
            }
        },
        components: {
            Refresh
        }
    }
</script>

<style>
    .list_item {
        margin: 0 auto;
        width: 90%;
        border: 1px solid #ababaa;
        padding: 30rpx 0;
        margin-top: 20rpx;
    }
</style>

注意事项

1、因组件监听的是dom元素的下拉事件,故若开始监听的列表高度为0或较小,可能触发不到,可以使用案例中的方法给list一个动态高度

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问