uniapp局部的下拉刷新以及组件出现的问题

局部的下拉刷新

一.scroll-view实例

可滚动视图区域, 用于区域滚动. 区域滚动的性能不及页面滚动

<scroll-view class="scroll"
             scroll-y="true"
             :refresher-enabled='refresherEnabled'
             @refresherpulling="onPulling"
             @refresherrefresh="onRefresh"
             @refresherrestore="onRestore"
             @refresherabort="onAbort"
             :refresher-triggered="triggered">
	<view></view>
</scroll-view>
data () {
    return {
      // 开启下拉
      refresherEnabled: true,
      //
      triggered: false,
    }
}
methods: {
    //下拉过程的函数
    onPulling (e) {
    },
    //松手后执行下拉事件的函数
    onRefresh () {
      if (this._freshing) return;
      this.triggered = 'restore';
      setTimeout(() => {
        this.triggered = false;
        this._freshing = false;
      }, 1000)
      //获取数据的函数
      this.current = 1
      this.getData()
    },
    //开始结束下拉的函数
    onRestore () {
      this.triggered = 'restore'; // 关闭动画
    },
    //结束下拉函数
    onAbort () { },
}

二.属性说明:

属性名类型默认值说明
scroll-xBooleanfalse允许横向滚动
scroll-yBooleanfalse允许纵向滚动
upper-thresholdNumber50距顶部/左边多远时(单位px),触发 scrolltoupper 事件
lower-thresholdNumber50距底部/右边多远时(单位px),触发 scrolltolower 事件
scroll-topNumber设置竖向滚动条位置
scroll-leftNumber设置横向滚动条位置
scroll-into-viewString值应为某子元素id(id不能以数字开头)。设置哪个方向可滚动,则在哪个方向滚动到该元素
scroll-with-animationBooleanfalse在设置滚动条位置时使用动画过渡
enable-back-to-topBooleanfalseiOS点击顶部状态栏、安卓双击标题栏时,滚动条返回顶部,只支持竖向
show-scrollbarBooleanfalse控制是否出现滚动条
refresher-enabledBooleanfalse开启自定义下拉刷新
refresher-thresholdnumber45设置自定义下拉刷新阈值
refresher-default-stylestring“black”设置自定义下拉刷新默认样式,支持设置 black,white,none,none 表示不使用默认样式
refresher-backgroundstring“#FFF”设置自定义下拉刷新区域背景颜色
refresher-triggeredbooleanfalse设置当前下拉刷新状态,true 表示下拉刷新已经被触发,false 表示下拉刷新未被触发
enable-flexbooleanfalse启用 flexbox 布局。开启后,当前节点声明了 display: flex 就会成为 flex container,并作用于其孩子节点。
scroll-anchoringbooleanfalse开启 scroll anchoring 特性,即控制滚动位置不随内容变化而抖动,仅在 iOS 下生效,安卓下可参考 CSS overflow-anchor 属性。
@scrolltoupperEventHandle滚动到顶部/左边,会触发 scrolltoupper 事件
@scrolltolowerEventHandle滚动到底部/右边,会触发 scrolltolower 事件
@scrollEventHandle滚动时触发,event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}
@refresherpullingEventHandle自定义下拉刷新控件被下拉
@refresherrefreshEventHandle自定义下拉刷新被触发
@refresherrestoreEventHandle自定义下拉刷新被复位
@refresherabortEventHandle自定义下拉刷新被中止

三.出现的问题

  1. 高度问题

    使用时要固定高度, 不然不会出现效果. 可以使用js计算高度, 也可以使用样式来自动拉伸,如使用flex布局.
    用其他布局要注意, 脱离文档流时默认没有高, 也不会出现效果.

  2. 下拉不回弹

    this.triggered = 'restore';
    

    triggered变量是来控制关闭下拉动作的, 可以在onRefresh这个函数中关闭

  3. 刚打开就执行下拉

    在官方文档的例子中, 在onLoad()中的内容删除即可

    onLoad() {
        this._freshing = false;
        setTimeout(() => {
            this.triggered = true;
        }, 1000)
    },
    
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值