Vue移动端下拉刷新组件的使用教程

目录
  • 写在前面
  • 开始
  • 结束

学习关键语句:

vant list组件和下拉刷新

vant 下拉刷新和局部滚动冲突

写在前面

每一次 ! 我是说每一次我在使用 vant 组件库里面 list组件和下拉刷新连在一起用的时候

都会出现下拉刷新和列表下滑局部滚动的冲突 !

这让我很 ! 难 ! 受 !

这篇文章提供 来自于浏览精彩的互联网并通过我实际使用得来的体验 给出 2 个解决方法 , 虽然说我还看到有人给的解决方法是 overflow 加给父级 , 我就觉得挺迷的 , 不晓得是怎么一回事

开始

第一种方法应该是很方便的一种了 , 就是修改源码样式了 , 你可以将以下代码加入到你的 css 中 , 注意 , 如果你使用的是局部 css , 请使用穿透或者新开一个全局 style

.van-pull-refresh {
    height: calc(100vh - 100px) !important; // 此处的 100px 需要根据你的实际情况来处理 , 是页面中不包含列表的高度部分
    overflow: auto !important;
}

但是有时候会出现第一种方法不起作用的情况 , 遇到这种情况 , 我也只能推荐你使用原生方法 scroll 来判断是否需要进行下拉刷新了

第二种就是即时判断是否需要下拉刷新了

这种方法的原理就是 当列表的 scrollTop 为 0 时 , 说明列表已经到顶了 , 到顶了还往下拉说明你就是想要刷新列表 , 如果 scrollTop 不等于 0 那就是列表向下滑动而已

我们看下使用组件时需要的属性

<van-pull-refresh
  	v-model="refreshing"	// 表示是否在刷新 , 下拉时自动变为 true ,需要在请求数据结束后手动设置为 false
  	@refresh="onRefresh"	// 下拉刷新触发的方法 , 将分页变为 1 然后请求数据
  	:disabled="pullRefreshDisabled"	// 是否禁用下拉刷新的方法 , 禁用后将无法下拉刷新 , 通过列表滚动高度来控制这个值
>
	<van-list
		 v-model:loading="loading"	// 是否处于加载状态 , 列表滑到最底处时自动变成 true , 变为 true 时不会触发 load 事件方法
		 :finished="finished"	// 是否已经加载完成
		 finished-text="没有更多了"
		 @load="onLoad" // 加载新数据的方法 , 移动端一般传入新的页数将新数据数组添加到原有数据数组之后
		 @scroll="divScroll"	// 滚动时触发的事件 , 来判断当前滚动的高度是多少
	>
		<div v-for="(item, index) in data" :key="index">
			{{ item }}
		</div>
	</van-list>
</van-pull-refresh>

如果都看了上面的注释 , 那么其实也很简单了 , 我们在 divScroll 方法中实时监控滚动的高度 , 当滚动的高度 == 0 的时候 , 就给下拉刷新组件可以下拉刷新的功能

const pullRefreshDisabled = ref(false)
const divScroll = (e: any) => {
    if (e.target.scrollTop == 0) {
        pullRefreshDisabled.value = false
    } else {
        pullRefreshDisabled.value = true
    }
}

用了这么长时间 , 我越发觉得一个 any 走天下了

初始值设置为 false 是为了一开始就能下拉刷新 , 千万别搞混 , 这个 pullRefreshDisabled 为 true 时是不能下拉刷新 , 为 false 时是可以下拉刷新

结束

emmm我以前挺抗拒使用判断滚动来写这个 , 但是当我真的写了之后 , 我直呼 真香 !

到此这篇关于Vue移动端下拉刷新组件的使用教程的文章就介绍到这了,更多相关Vue下拉刷新组件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 基于vue封装下拉刷新上拉加载组件

    基于vue和原生javascript封装的下拉刷新上拉加载组件,供大家参考,具体内容如下 upTilte插槽是下拉刷新的自定义内容放的地方 downTilte插槽是上拉加载的自定义内容放的地方 默认插槽为列表内容区域 组件代码如下 <template> <div class="refresh" id="refresh"> <slot name="upTilte"></slot> <slot&g

  • vue下拉刷新组件的开发及slot的使用详解

    "下拉刷新"和"上滑加载更多"功能在前端.尤其是移动端项目中非常重要,这里笔者由曾经做过的vue项目中的"blink"功能和各位探讨下[下拉刷新]组件的开发: 正式开篇 在前端项目的 components 文件夹下新建 pullRefreshView 文件夹,在其中新建组件 index.vue:(它代表"整个屏幕",通过slot插入页面其他内容而不是传统的设置遮罩层触发下拉刷新) 首先需要编写下拉刷新组件的 template,

  • vue移动端下拉刷新和上滑加载

    本文实例为大家分享了vue移动端下拉刷新和上滑加载的具体代码,供大家参考,具体内容如下 组件 <template> <div class="mu-load-more" @touchstart="touchStart($event)" @touchmove="touchMove($event)" @touchend="touchEnd($event)"> <div class="mu-re

  • vue移动端下拉刷新和上拉加载的实现代码

    由于自身的项目比较简单,只有几个H5页面,用来嵌入app中,所有没有引入移动端的UI框架,但是介于能让用户在浏览H5页面时有下拉刷新和上拉加载,有更好的用户体验,自己写组件实现. 1.下拉刷新DropDownRefresh.vue <template lang="html"> <div class="refreshMoudle" @touchstart="touchStart($event)" @touchmove="

  • Android Scroller及下拉刷新组件原理解析

    Android事件拦截机制 Android中事件的传递和拦截和View树结构是相关联的,在View树中,分为叶子节点和普通节点,普通节点有子节点只能是ViewGroup,叶子节点可以是View或者ViewGroup.Android和事件分发拦截相关的方法有 dispatchTouchEvent(MotionEvent ev) 事件分发相关的方法,沿着View树将一个用户的触摸事件向下分发. onInterceptTouchEvent(MotionEvent ev) 在dispatchTouchE

  • mescroll.js上拉加载下拉刷新组件使用详解

    本文实例为大家分享了上拉加载下拉刷新组件mescroll.js的具体代码,供大家参考,具体内容如下 附上链接地址http://www.mescroll.com/api.html#NPM,手机端和浏览器都能够使用,唯一推荐: 使用过程中要注意这些问题http://www.mescroll.com/qa.html: 使用注意事项: 1.引入的时候出问题及时看官方给出的解决方案(基本上都必须看): 2.react中一定要在dom渲染之后的方法(didMount)中初始化,因为这个需要拿到dom对象:

  • vue实现原生下拉刷新

    本文实例为大家分享了vue实现原生下拉刷新的具体代码,供大家参考,具体内容如下 这是动画样式 文字样式 html代码 <template>  <div class="car-box">    <div class="car">下拉刷新</div>    <div class="box" @touchstart="fnstart" ref="Element"

  • Vue封装远程下拉框组件的实现示例

    之前封装了一个远程搜索的输入框,静态在Vue官网看到一个类似的远程搜索下拉框,今天也封装一个远程搜索下拉框,面对不同的需求 我们修改了官方提供的代码来封装了 父组件 RemoteSearch.vue <template> <el-row> <el-select v-if="chooseFlag ==0" v-model="selectKey" :multiple="false" :filterable="t

  • Android Flutter实现自定义下拉刷新组件

    目录 前言 改造点 DIY下拉组件样式 刷新时机调整 效果展示 前言 在Flutter开发中官方提供了多平台的下拉刷新组件供开发者使用,例如RefreshIndicator和CupertinoSliverRefreshControl分别适配Android和iOS下拉刷新交互形态.但实际情况中这两者使用情况却不太相同在使用场景就存在差异,RefreshIndicator作为嵌套型下拉组件列表内容作为它的child使用而CupertinoSliverRefreshControl是嵌入在Sliver列

  • vueScroll实现移动端下拉刷新、上拉加载

    移动端开发,处理列表翻页和数据的时候,下拉刷新和上拉加载应用的比较广泛,今天给大家推荐一个vue的插件,vueScroll,首先上图: 话不多说,上代码了: 一.引入并使用VueScroll import VueScroller from 'vue-scroller'; Vue.use(VueScroller) 二.在html或者.vue组件里面使用 三.在js文件里面操作插件 首先在在methods里面写上方法 在data里面实现申明好 isLoading = true; 然后继续在metho

  • pc加载更多功能和移动端下拉刷新加载数据

    感觉一个人玩lol也没意思了,玩会手机,看到这个下拉刷新功能就写了这个demo! 这个demo写的比较随意,咱不能当做插件使用,基本思想是没问题的,要用就自己封装吧! 直接上代码分析下吧! 布局: <ul class="show-area" style="min-height:100px;"></ul> <button class='page-btn-nick' >加载更多</button> 就2行,只为实现功能,足矣

随机推荐