移动端怎样做出上拉下滑刷新加载

这次给大家带来移动端怎样做出上拉下滑刷新加载,移动端做出上拉下滑刷新加载的注意事项有哪些,下面就是实战案例,一起来看一下。

直接上代码,不懂的多看几遍,下面我换会告诉大家如何使用。

 

下拉更新 松开更新 更新中
加载中……

export default { props: { offset: { type: Number, default: 40 }, enableInfinite: { type: Boolean, default: true }, enableRefresh: { type: Boolean, default: true }, onRefresh: { type: Function, default: undefined, required: false }, onInfinite: { type: Function, default: undefined, require: false } }, data() { return { top: 0, state: 0, startY: 0, touching: false, infiniteLoading: false } }, methods: { touchStart(e) { this.startY = e.targetTouches[0].pageY this.startScroll = this.$el.scrollTop || 0 this.touching = true }, touchMove(e) { if (!this.enableRefresh || this.$el.scrollTop > 0 || !this.touching) { return } let diff = e.targetTouches[0].pageY - this.startY - this.startScroll if (diff > 0) e.preventDefault() this.top = Math.pow(diff, 0.8) + (this.state === 2 ? this.offset : 0) if (this.state === 2) { // in refreshing return } if (this.top >= this.offset) { this.state = 1 } else { this.state = 0 } }, touchEnd(e) { if (!this.enableRefresh) return this.touching = false if (this.state === 2) { // in refreshing this.state = 2 this.top = this.offset return } if (this.top >= this.offset) { // do refresh this.refresh() } else { // cancel refresh this.state = 0 this.top = 0 } }, refresh() { this.state = 2 this.top = this.offset this.onRefresh(this.refreshDone) }, refreshDone() { this.state = 0 this.top = 0 }, infinite() { this.infiniteLoading = true this.onInfinite(this.infiniteDone) }, infiniteDone() { this.infiniteLoading = false }, onScroll(e) { if (!this.enableInfinite || this.infiniteLoading) { return } let outerHeight = this.$el.clientHeight let innerHeight = this.$el.querySelector('.inner').clientHeight let scrollTop = this.$el.scrollTop let ptrHeight = this.onRefresh ? this.$el.querySelector('.pull-refresh').clientHeight : 0 let infiniteHeight = this.$el.querySelector('.load-more').clientHeight let bottom = innerHeight - outerHeight - scrollTop - ptrHeight if (bottom < infiniteHeight) this.infinite() } }}.yo-scroll { position: absolute; top: 2.5rem; right: 0; bottom: 0; left: 0; overflow: auto; -webkit-overflow-scrolling: touch; background-color: #ddd}.yo-scroll .inner { position: absolute; top: -2rem; width: 100%; transition-duration: 300ms;}.yo-scroll .pull-refresh { position: relative; left: 0; top: 0; width: 100%; height: 2rem; display: flex; align-items: center; justify-content: center;}.yo-scroll.touch .inner { transition-duration: 0ms;}.yo-scroll.down .down-tip { display: block;}.yo-scroll.up .up-tip { display: block;}.yo-scroll.refresh .refresh-tip { display: block;}.yo-scroll .down-tip,.yo-scroll .refresh-tip,.yo-scroll .up-tip { display: none;}.yo-scroll .load-more { height: 3rem; display: flex; align-items: center; justify-content: center;}

登录后复制

把上面组件拷贝一下,存成后缀是.vue的组件放到你的component下,  然后引入到页面 , 下面是我引用的demo

上代码: 里面有注释哦,有问题给我留言!

 

  • {{item.name}}
  • {{item.name}}

import Scroll from './y-scroll/scroll';export default{ data () { return { counter : 1, //默认已经显示出15条数据 count等于一是让从16条开始加载 num : 15, // 一次显示多少条 pageStart : 0, // 开始页数 pageEnd : 0, // 结束页数 listdata: [], // 下拉更新数据存放数组 downdata: [] // 上拉更多的数据存放数组 } }, mounted : function(){ this.getList(); }, methods: { getList(){ let vm = this; vm.$http.get('https://api.github.com/repos/typecho-fans/plugins/contents/').then((response) => { vm.listdata = response.data.slice(0,15); }, (response) => { console.log('error'); }); }, onRefresh(done) { this.getList(); done() // call done }, onInfinite(done) { let vm = this; vm.$http.get('https://api.github.com/repos/typecho-fans/plugins/contents/').then((response) => { vm.counter++; vm.pageEnd = vm.num * vm.counter; vm.pageStart = vm.pageEnd - vm.num; let arr = response.data; let i = vm.pageStart; let end = vm.pageEnd; for(; i= response.data.length){ this.$el.querySelector('.load-more').style.display = 'none'; return; } } done() // call done }, (response) => { console.log('error'); }); } }, components : {'v-scroll': Scroll }}

登录后复制

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

使用beforeEnter钩子函数(附代码)

使用beforeEnter钩子函数(附代码)

以上就是移动端怎样做出上拉下滑刷新加载的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3188246.html

(0)
上一篇 2025年3月31日 23:26:10
下一篇 2025年3月31日 23:26:25

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 如何在uniapp中实现下拉刷新和上拉加载更多

    标题:uniapp中实现下拉刷新和上拉加载更多的技巧与示例 引言:在移动应用开发中,下拉刷新和上拉加载更多是常见的功能要求,能够提升用户体验和提供更流畅的交互。本文将详细介绍如何在uniapp中实现这两个功能,并给出具体的代码示例,帮助开发…

    2025年5月1日
    000
  • uniapp实现如何在页面中添加下拉刷新和上拉加载更多的功能

    Uniapp实现下拉刷新和上拉加载更多是很常见的需求,在这篇文章中,我们将详细介绍如何在Uniapp中实现这两个功能,并给出具体的代码示例。 一、下拉刷新功能的实现 在pages目录下选择你需要添加下拉刷新功能的页面,打开该页面的vue文件…

    2025年5月1日
    000
  • uni-app视频播放插件的功能开发和优化

    在uni-app中开发和优化视频播放插件可以通过以下步骤实现:1. 使用组件作为基础,封装和扩展其功能。2. 实现基本功能如播放、暂停,并添加自定义控制条和播放列表。3. 优化性能,通过预加载、动态调整视频质量和缓存机制提升用户体验。通过这…

    2025年5月1日
    000
  • uni-app中数据的排序和筛选功能开发

    在uni-app中,数据排序和筛选可以通过vue.js的计算属性或方法实现。1.排序:使用计算属性或方法对数据进行排序,如按价格排序。2.筛选:通过计算属性或方法筛选数据,如筛选价格低于100的商品。 引言 在开发uni-app应用时,数据…

    2025年5月1日
    000
  • uni-app图表插件的选择和数据可视化

    在uni-app中选择图表插件时,应考虑兼容性、性能、功能和社区支持。1. 兼容性:确保插件在所有目标平台上运行正常。2. 性能:特别关注移动端的流畅度。3. 功能:选择支持所需图表类型的插件。4. 社区支持:活跃社区和丰富文档降低开发难度…

    2025年5月1日
    000
  • uni-app数据的分页加载和无限滚动实现

    在uni-app中实现分页加载和无限滚动可以通过以下步骤:1) 使用uni.request发起网络请求获取分页数据;2) 通过vue的data属性管理当前页码和数据列表;3) 利用scroll-view组件的scrolltolower事件实…

    2025年5月1日
    000
  • uni-app开发的基本规范和注意事项

    uni-app开发需要严格的规范和注意事项,因为它是跨平台框架,需确保代码在不同平台兼容,且规范代码易于维护和扩展。1.遵循eslint等代码风格规范,确保代码一致性和可读性。2.合理组织项目文件结构,确保每个文件职责明确。3.使用统一的命…

    2025年5月1日
    000
  • uni-app富文本编辑器插件的使用和定制

    在uni-app中使用富文本编辑器插件可以通过以下步骤实现:1. 在模板中引入组件并设置其属性。2. 在脚本中获取编辑器上下文以进行初始化和操作。3. 使用编辑器上下文进行文本和图片的插入及格式化。4. 通过调试技巧解决常见问题,如检查编辑…

    2025年5月1日
    000
  • uni-app开发环境的详细搭建步骤

    搭建uni-app开发环境的步骤包括:1.下载并安装hbuilderx;2.在hbuilderx中创建uni-app项目;3.编写代码并使用条件编译进行跨平台开发;4.使用调试工具解决常见错误;5.通过优化api调用和页面加载速度提升性能。…

    2025年5月1日
    000
  • uni-app适合哪些类型的项目开发

    uni-app适合跨平台应用、小程序开发和企业级应用。1) 跨平台应用:适用于需在ios、android和小程序上运行的项目。2) 小程序开发:提供强大支持,适合快速搭建和迭代。3) 企业级应用:适用于复杂业务系统的快速构建和管理。 引言 …

    2025年5月1日
    000

发表回复

登录后才能评论