uniapp 中如何实现上拉加载,下拉刷新?

在 uniapp 中,可以通过使用下拉刷新组件和上拉加载组件来实现上拉加载和下拉刷新。

1.onReachBottom 上拉时到底部多少距离触发的事件

2.onPullDownRefresh     下拉后触发的事件

下拉刷新

原理:在页面顶部添加一个下拉刷新区域,当用户向下拉动页面时,触发下拉刷新事件,执行相应的数据更新操作。

代码演示:

  1. 在页面中添加下拉刷新组件
<template>
  <view>
    <!-- 下拉刷新组件 -->
    <uni-scroll-view refresher-enabled refresher-triggered="@refreshData" :style="{height: winHeight + 'px'}">
      <view v-for="(item,index) in dataList" :key="index">{{item}}</view>
    </uni-scroll-view>
  </view>
</template>

      2.在页面中添加下拉刷新事件处理函数,更新数据

<script>
export default {
  data() {
    return {
      dataList: [],
      winHeight: 0 // 页面高度
    }
  },
  onReady() {
    // 获取页面高度,用于设置下拉刷新组件高度
    uni.getSystemInfo({
      success: (res) => {
        this.winHeight = res.windowHeight
      }
    })
  },
  methods: {
    refreshData() {
      // 模拟数据更新
      setTimeout(() => {
        this.dataList = ['1', '2', '3']
        uni.stopPullDownRefresh() // 停止下拉刷新动画
      }, 1000)
    }
  }
}
</script>

上拉加载

原理:在页面底部添加一个触底加载区域,当用户滚动到底部时,触发触底加载事件,执行相应的数据更新操作。

代码演示:

  1. 在页面中添加上拉加载组件
<template>
  <view>
    <uni-scroll-view :style="{height: winHeight + 'px'}" scroll-y @scrolltolower="@loadMoreData">
      <view v-for="(item,index) in dataList" :key="index">{{item}}</view>
      <!-- 上拉加载组件 -->
      <view v-if="showLoading" class="loading">{{loadingText}}</view>
    </uni-scroll-view>
  </view>
</template>

     2.在页面中添加加载更多数据事件处理函数,更新数据

<script>
export default {
  data() {
    return {
      dataList: [],
      winHeight: 0, // 页面高度
      showLoading: false, // 是否展示加载中提示
      loadingText: '加载中,请稍后' // 加载中提示文本
    }
  },
  onReady() {
    // 获取页面高度,用于设置滚动区域高度
    uni.getSystemInfo({
      success: (res) => {
        this.winHeight = res.windowHeight
      }
    })
  },
  methods: {
    loadMoreData() {
      if (!this.showLoading) {
        this.showLoading = true // 展示加载中提示
        // 模拟加载更多数据
        setTimeout(() => {
          let newData = ['4', '5', '6']
          this.dataList = this.dataList.concat(newData)
          this.showLoading = false // 隐藏加载中提示
        }, 1000)
      }
    }
  }
}
</script>

以上代码演示中,uni-scroll-view 是 uniapp 中的一个滚动组件,配合下拉刷新和上拉加载组件使用,可以实现下拉刷新和上拉加载效果。在上拉加载的代码演示中,loading 提示可以通过 CSS 样式来进行自定义。

 

 

 

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
uniapp,可以使用`uni-scroll-view`组件实现上拉加载下拉刷新。 1. 首先,在页面引入`uni-scroll-view`组件。 ```html <template> <uni-scroll-view ref="scroll-view" class="scroll-view" :scroll-with-animation="true" @scrolltolower="loadMore" @scrolltoupper="refresh"> <!--内容区--> </uni-scroll-view> </template> ``` 2. 在`script`定义`loadMore`和`refresh`方法。 ```javascript <script> export default { methods: { // 加载更多 loadMore() { // TODO: 加载更多的逻辑 }, // 下拉刷新 refresh() { // TODO: 下拉刷新的逻辑 } } } </script> ``` 3. 在`loadMore`方法,可以通过调用`uni.request`方法向后端请求更多数据,并将新数据追加到原有数据的末尾。同时,可以设置一个`loading`变量,在数据请求完成之前显示一个加载提示。 ```javascript // 加载更多 loadMore() { // 如果正在加载数据,则返回 if (this.loading) return // 显示加载提示 this.loading = true uni.request({ url: 'https://xxx.com/api/list', data: { page: this.page + 1 }, success: res => { // 将新数据追加到原有数据的末尾 this.list = this.list.concat(res.data.list) // 更新页码 this.page++ // 隐藏加载提示 this.loading = false }, fail: res => { // 隐藏加载提示 this.loading = false } }) } ``` 4. 在`refresh`方法,可以通过调用`uni.request`方法重新请求数据,并将新数据覆盖原有数据。同时,可以设置一个`refreshing`变量,在数据请求完成之前显示一个刷新提示。 ```javascript // 下拉刷新 refresh() { // 如果正在刷新,则返回 if (this.refreshing) return // 显示刷新提示 this.refreshing = true uni.request({ url: 'https://xxx.com/api/list', data: { page: 1 }, success: res => { // 将新数据覆盖原有数据 this.list = res.data.list // 更新页码 this.page = 1 // 隐藏刷新提示 this.refreshing = false }, fail: res => { // 隐藏刷新提示 this.refreshing = false } }) } ``` 5. 最后,可以通过`uni-loading`组件和`uni-load-more`组件分别实现加载提示和加载更多提示。 ```html <template> <uni-scroll-view ref="scroll-view" class="scroll-view" :scroll-with-animation="true" @scrolltolower="loadMore" @scrolltoupper="refresh"> <!--内容区--> <uni-load-more :show="loading"> 加载... </uni-load-more> </uni-scroll-view> <uni-loading :show="refreshing" mode="pulling"> 正在刷新... </uni-loading> </template> ``` 这样,就可以在uniapp实现上拉加载下拉刷新了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

破裤兜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值