当前位置:   article > 正文

微信小程序上拉加载更多数据_微信小程序上拉加载数据

微信小程序上拉加载数据

微信小程序中实现上拉加载更多的功能,通常需要使用到onReachBottom生命周期函数。当页面滚动到底部时,该函数会被触发。以下是一个简单的实现上拉加载更多的示例代码:

首先,在页面的.json配置文件中,确保enablePullDownRefresh设置为false,因为我们使用自定义的上拉加载,而不是下拉刷新:

 

json复制代码

{
"enablePullDownRefresh": false
}

接着,在页面的.wxml文件中,创建你的内容布局:

html代码
  1. <view class="container">
  2. <view wx:for="{{listData}}" wx:key="unique">
  3. <!-- 这里展示你的列表数据 -->
  4. <text>{{item.content}}</text>
  5. </view>
  6. <!-- 上拉加载更多提示 -->
  7. <view wx:if="{{loading}}" class="loading-tip">加载中...</view>
  8. <!-- 如果没有更多数据,显示提示 -->
  9. <view wx:if="{{noMore}}" class="no-more-tip">没有更多了</view>
  10. </view>

在页面的.wxss文件中,添加相应的样式:

css代码
  1. .container {
  2. /* 容器样式 */
  3. }
  4. .loading-tip {
  5. /* 加载中提示样式 */
  6. text-align: center;
  7. padding: 20rpx;
  8. }
  9. .no-more-tip {
  10. /* 没有更多数据提示样式 */
  11. text-align: center;
  12. padding: 20rpx;
  13. color: #999;
  14. }

最后,在页面的.js文件中,编写逻辑代码:

javascript代码
  1. Page({
  2. data: {
  3. listData: [], // 列表数据
  4. page: 1, // 当前页码
  5. loading: false, // 是否正在加载
  6. noMore: false, // 是否没有更多数据
  7. },
  8. onLoad: function() {
  9. this.loadMore(); // 页面加载时请求第一页数据
  10. },
  11. loadMore: function() {
  12. if (this.data.loading) {
  13. return; // 如果已经在加载,则不再发起请求
  14. }
  15. if (this.data.noMore) {
  16. return; // 如果没有更多数据,则不再发起请求
  17. }
  18. this.setData({
  19. loading: true, // 开始加载时设置状态
  20. });
  21. // 假设有一个获取数据的API,这里使用wx.request模拟请求
  22. wx.request({
  23. url: '你的API地址',
  24. data: {
  25. page: this.data.page,
  26. },
  27. success: (res) => {
  28. if (res.data.length > 0) {
  29. this.setData({
  30. listData: this.data.listData.concat(res.data), // 合并新数据到列表数据
  31. page: this.data.page + 1, // 页码自增
  32. loading: false, // 数据加载完成,设置状态
  33. });
  34. } else {
  35. this.setData({
  36. noMore: true, // 没有更多数据,设置状态
  37. loading: false, // 数据加载完成,设置状态
  38. });
  39. }
  40. },
  41. fail: (err) => {
  42. console.error(err);
  43. this.setData({
  44. loading: false, // 请求失败,设置状态
  45. });
  46. },
  47. });
  48. },
  49. onReachBottom: function() {
  50. this.loadMore(); // 当滚动到底部时,加载更多数据
  51. },
  52. });

在上面的代码中,loadMore函数负责发起请求获取更多数据,并在获取成功后更新页面数据。onReachBottom函数在页面滚动到底部时被调用,从而触发加载更多数据的逻辑。

请确保将你的API地址替换为你实际的后端接口地址,并且根据实际的API响应格式来调整数据处理逻辑。

这只是一个基本的实现示例,你可以根据实际需求进行扩展和优化,比如添加错误处理、分页参数传递、加载动画等。

  1. <view class="contentBody">
  2. <view class="articleItem" wx:for="{{articleList}}" wx:key="articlePublishID" data-row="{{item}}" bind:tap="clickArticle">
  3. <view class="articleItemName">{{item.name}}</view>
  4. <view class="articleItemContent">
  5. {{item.description?item.description:''}}
  6. </view>
  7. </view>
  8. <!-- 上拉加载更多提示 -->
  9. <view wx:if="{{loading}}" class="loading-tip">加载中...</view>
  10. <!-- 如果没有更多数据,显示提示 -->
  11. <view wx:if="{{noMore}}" class="no-more-tip">没有更多了</view>
  12. </view>
  1. // 点击切换导航
  2. clickNav(e){
  3. const row=e.currentTarget.dataset.row
  4. console.log('row',row.name);
  5. this.setData({
  6. articleList:[],
  7. page:1,
  8. noMore:false,
  9. loading:false,
  10. activeNavID:row.navigatorID,
  11. })
  12. this.loadMore()
  13. },
  14. loadMore() {
  15. if (this.data.loading) {
  16. return; // 如果已经在加载,则不再发起请求
  17. }
  18. if (this.data.noMore) {
  19. return; // 如果没有更多数据,则不再发起请求
  20. }
  21. this.setData({
  22. loading: true, // 开始加载时设置状态
  23. });
  24. const that = this
  25. ports.ModuleArticle.getArticlePublishList({
  26. applicationID: app.applicationID,
  27. companyID: app.companyID,
  28. navigatorID: this.data.activeNavID,
  29. sortTypeStartdate: 2,
  30. pageNumber: 10,
  31. currentPage:this.data.page,
  32. }, that, res => {
  33. if (res.data.header.code == 0) {
  34. let obj = res.data.body.data.rows
  35. if (obj.length > 0) {
  36. this.setData({
  37. articleList: this.data.articleList.concat(obj), // 合并新数据到列表数据
  38. page: this.data.page + 1, // 页码自增
  39. loading: false, // 数据加载完成,设置状态
  40. });
  41. } else {
  42. this.setData({
  43. noMore: true, // 没有更多数据,设置状态
  44. loading: false, // 数据加载完成,设置状态
  45. });
  46. }
  47. }else{
  48. this.setData({
  49. loading: false, // 请求失败,设置状态
  50. });
  51. }
  52. })
  53. },
  54. onReachBottom() {
  55. this.loadMore(); // 当滚动到底部时,加载更多数据
  56. },

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/1011097
推荐阅读
相关标签
  

闽ICP备14008679号