当前位置:首页 > VUE

vue 实现下拉刷新

2026-01-21 18:45:49VUE

Vue 实现下拉刷新的方法

使用第三方库(如vue-pull-refresh)

安装vue-pull-refresh库:

npm install vue-pull-refresh --save

在组件中引入并使用:

import VuePullRefresh from 'vue-pull-refresh'

export default {
  components: {
    VuePullRefresh
  },
  methods: {
    onRefresh() {
      // 刷新数据逻辑
      setTimeout(() => {
        this.$refs.pullRefresh.forceUpdate()
      }, 1000)
    }
  }
}

模板部分:

<vue-pull-refresh ref="pullRefresh" @refresh="onRefresh">
  <!-- 内容区域 -->
</vue-pull-refresh>

原生实现方案

监听touch事件实现下拉刷新:

data() {
  return {
    startY: 0,
    distance: 0,
    isLoading: false
  }
},
methods: {
  touchStart(e) {
    this.startY = e.touches[0].pageY
  },
  touchMove(e) {
    const touchY = e.touches[0].pageY
    this.distance = touchY - this.startY

    if (this.distance > 0 && window.scrollY <= 0) {
      e.preventDefault()
    }
  },
  touchEnd() {
    if (this.distance > 100 && !this.isLoading) {
      this.isLoading = true
      this.refreshData()
    }
    this.distance = 0
  },
  refreshData() {
    // 数据刷新逻辑
    setTimeout(() => {
      this.isLoading = false
    }, 1000)
  }
}

模板部分:

<div 
  @touchstart="touchStart"
  @touchmove="touchMove"
  @touchend="touchEnd"
>
  <div class="refresh-container" :style="{ transform: `translateY(${distance}px)` }">
    <div v-if="isLoading">加载中...</div>
    <!-- 内容区域 -->
  </div>
</div>

使用better-scroll库

安装better-scroll:

npm install better-scroll --save

实现代码:

import BScroll from 'better-scroll'

export default {
  mounted() {
    this.initScroll()
  },
  methods: {
    initScroll() {
      this.scroll = new BScroll(this.$refs.wrapper, {
        pullDownRefresh: {
          threshold: 50,
          stop: 20
        },
        click: true
      })

      this.scroll.on('pullingDown', () => {
        this.refreshData()
      })
    },
    refreshData() {
      // 异步获取数据
      setTimeout(() => {
        this.scroll.finishPullDown()
        this.scroll.refresh()
      }, 1000)
    }
  }
}

模板部分:

<div ref="wrapper" class="wrapper">
  <div class="content">
    <!-- 下拉刷新提示 -->
    <div class="pull-down-refresh">下拉刷新</div>
    <!-- 内容区域 -->
  </div>
</div>

样式处理

为原生实现添加基本样式:

.refresh-container {
  transition: transform 0.3s;
}
.pull-down-refresh {
  text-align: center;
  padding: 10px 0;
}

为better-scroll添加样式:

.wrapper {
  height: 100vh;
  overflow: hidden;
}

以上方法可根据项目需求选择合适方案,第三方库实现更简单快捷,原生实现更灵活可控。

vue 实现下拉刷新

标签: vue
分享给朋友:

相关文章

vue实现多级表头

vue实现多级表头

Vue 实现多级表头的方法 使用 el-table 组件 Element UI 的 el-table 组件支持多级表头的实现,通过嵌套 el-table-column 即可完成。 <el-t…

vue实现访问量

vue实现访问量

Vue 实现访问量统计的方法 使用前端计数 在 Vue 中可以通过简单的计数器实现页面访问量的统计。这种方法适合小型项目或演示用途。 // 在 Vue 组件中 data() { return…

vue实现选择本地文件

vue实现选择本地文件

实现文件选择功能 在Vue中实现本地文件选择可以通过HTML原生的<input type="file">元素实现。创建一个基本的文件选择组件: <template> &l…

vue按钮实现截屏

vue按钮实现截屏

Vue 按钮实现截屏的方法 在 Vue 项目中实现截屏功能可以通过多种方式完成,以下是几种常见的方法: 使用 html2canvas 库 安装 html2canvas 库: npm insta…

vue设计与实现下载

vue设计与实现下载

vue设计与实现电子书下载 《Vue.js设计与实现》是一本深入解析Vue.js框架原理的书籍,由霍春阳(HcySunYang)撰写。以下是获取该资源的常见途径: 正版购买渠道 京东、当当、天…

vue实现下拉刷新组件

vue实现下拉刷新组件

实现下拉刷新组件的核心思路 下拉刷新功能通常通过监听触摸事件、滚动位置和动画效果实现。Vue中可以利用自定义指令或封装组件完成,以下为两种常见实现方式。 基于自定义指令的实现 创建指令监听触摸事件…