Bootstrap

小白学习微信小程序的下拉刷新和上拉加载更多

下拉刷新和上拉加载更多是微信小程序中常用的功能之一,可以提升用户体验,下面为你提供一个详细的案例,包括代码和解释。

  1. 新建一个微信小程序项目,命名为"demo"。

  2. 在app.json文件中配置页面路径:

{
  "pages": [
    "pages/index/index"
  ]
}

  1. 在pages文件夹中新建两个文件夹:“index”,用来存放首页相关的文件;“components”,用来存放自定义组件。

  2. 在index文件夹下新建index.wxml文件,添加下面的代码:

<scroll-view scroll-y="{{true}}" bindscrolltolower="loadMoreData">
  <!-- 下拉刷新 -->
  <view class="refresh">
    <view class="refresh-icon" wx:if="{{refreshing}}">
      <image src="/images/loading.gif"></image>
    </view>
    <view class="refresh-text" wx:else>
      下拉刷新
    </view>
  </view>
  
  <!-- 内容区域 -->
  <view class="content">
    <!-- 此处为你的内容列表 -->
    <view wx:for="{{list}}" wx:key="index">{{item}}</view>
  </view>

  <!-- 上拉加载更多 -->
  <view class="load-more">
    <view class="load-more-icon" wx:if="{{loadingMore}}">
      <image src="/images/loading.gif"></image>
    </view>
    <view class="load-more-text" wx:else>
      加载更多
    </view>
  </view>
</scroll-view>

解释:

  • scroll-view组件用于实现滚动视图,通过设置scroll-y="{{true}}"属性来开启垂直滚动。
  • bindscrolltolower事件绑定了一个名为loadMoreData的函数,用于监听滚动到底部时触发加载更多的操作。
  • 刷新和加载更多的状态通过refreshing和loadingMore变量来控制,初始值为false。
  1. 在index.js文件中添加下面的代码:
Page({
  data: {
    refreshing: false,
    loadingMore: false,
    list: []
  },

  onPullDownRefresh() {
    // 下拉刷新事件
    this.refreshData();
  },

  loadMoreData() {
    // 加载更多事件
    this.loadData();
  },

  refreshData() {
    // 模拟刷新数据
    this.setData({
      refreshing: true
    });

    setTimeout(() => {
      this.setData({
        refreshing: false,
        list: [1, 2, 3, 4, 5]
      });
    }, 2000);
  },

  loadData() {
    // 模拟加载更多数据
    this.setData({
      loadingMore: true
    });

    setTimeout(() => {
      let list = this.data.list;
      for (let i = list.length + 1; i <= list.length + 5; i++) {
        list.push(i);
      }

      this.setData({
        loadingMore: false,
        list: list
      });
    }, 2000);
  },

  onLoad() {
    // 初始化数据
    this.refreshData();
  }
})

解释:

  • onPullDownRefresh是一个页面生命周期函数,在用户下拉刷新页面时触发,我们在这里调用refreshData函数来实现刷新数据。
  • loadMoreData是一个函数,用于监听scroll-view组件滚动到底部时触发,我们在这里调用loadData函数来实现加载更多数据。
  • refreshData函数模拟刷新数据的过程,通过setData来更新refreshing和list变量的值。
  • loadData函数模拟加载更多数据的过程,通过setData来更新loadingMore和list变量的值。
  1. 在index.wxss文件中添加下面的样式代码:
.refresh {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 80rpx;
  background-color: #f2f2f2;
  color: #999999;
  font-size: 28rpx;
}

.refresh-icon,
.load-more-icon {
  width: 40rpx;
  height: 40rpx;
}

.refresh-text,
.load-more-text {
  margin-left: 10rpx;
}

.load-more {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 80rpx;
  background-color: #f2f2f2;
  color: #999999;
  font-size: 28rpx;
}

解释:

  • refresh和load-more是下拉刷新和上拉加载更多的样式区域。
  • refresh-icon和load-more-icon是加载动画的样式。
  • refresh-text和load-more-text是文字提示的样式。
  1. 在项目根目录下创建images文件夹,并在其中放入一个名为loading.gif的加载动画图片。

  2. 运行小程序,效果如下:

  • 首次加载页面时,会自动触发refreshData函数,模拟刷新数据的过程。
  • 下拉页面时,会触发onPullDownRefresh函数,再次调用refreshData函数来刷新数据。
  • 滚动到页面底部时,会触发loadMoreData函数,调用loadData函数来加载更多数据。

通过以上步骤,你可以实现微信小程序中的下拉刷新和上拉加载更多的功能。希望这个例子可以帮助到你,如果有任何问题,请随时询问。

;