当前位置:   article > 正文

uniapp上拉加载 加载更多 uni-load-more组件使用

uni-load-more

1、给渲染的数据加上滚动加载 和 uni-load-more 组件

  1. <scroll-view class="list" scroll-y="true">
  2. </scroll-view>
  3. <uni-load-more :status="status" :content-text="contentText" />

2、引入组件 和 数据初始化

  1. import uniLoadMore from "@/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue"
  2. export default {
  3. components: {
  4. uniLoadMore
  5. },
  6. data() {
  7. return {
  8. searchValue: '',
  9. universityList: [],
  10. page: 1,
  11. limit: 10,
  12. status: 'more',
  13. contentText: {
  14. contentdown: '查看更多',
  15. contentrefresh: '加载中',
  16. contentnomore: '没有更多'
  17. },
  18. }
  19. },

3、加上下拉刷新和上拉加载

下拉刷新的时候将 页码重置为1

上拉加载的时候 如果没有更多则不加载数据 否则 page ++ 然后获取第二页的数据

  1. //下拉刷新
  2. onPullDownRefresh() {
  3. this.page = 1;
  4. uni.stopPullDownRefresh();
  5. this.universityList = [];
  6. this.getUniversityList()
  7. },
  8. //上拉加载
  9. onReachBottom() {
  10. if (this.status == 'noMore') {
  11. return;
  12. }
  13. this.page++;
  14. this.getUniversityList();
  15. },

4、接收数据 如果页码为1 则直接赋值 否则 加上之前的数据

判断数据的长度是否小于 我们需要的长度 如果小于 那就是没有更多数据 

  1. if (this.page === 1) {
  2. this.universityList = res.data;
  3. } else {
  4. this.universityList = this.universityList.concat(res.data);
  5. }
  6. // 判断是否还有更多数据
  7. if (res.data.length < this.limit) {
  8. this.status = 'noMore'; // 没有更多数据
  9. } else {
  10. this.status = 'more'; // 还有更多数据
  11. }

完整代码

  1. <template>
  2. <view class="main">
  3. <view class="top-content">
  4. <view class="search">
  5. <view class="ipt">
  6. <image class="searchPic" src="../../static/img/searchpic.png"></image>
  7. <input class="searchIpt" v-model="searchValue" type="text" placeholder="请输入搜索内容"
  8. placeholder-style="color:#E5E5E5;font-size:24rpx;font-weight:400;">
  9. </view>
  10. <view class="btn">
  11. <button class="searchBtn" @click="onSearch">搜索</button>
  12. </view>
  13. </view>
  14. </view>
  15. <view class="content">
  16. <scroll-view class="list" scroll-y="true">
  17. <view class="university" v-for="(item,index) in universityList" :key="index" @click="go(item.id)">
  18. <view class="universityNav">
  19. <view class="universityInfo">{{item.code}} {{item.name}}</view>
  20. <view>
  21. <image class="go" src="../../static/img/in.png"></image>
  22. </view>
  23. </view>
  24. </view>
  25. </scroll-view>
  26. <uni-load-more :status="status" :content-text="contentText" />
  27. </view>
  28. </view>
  29. </template>
  30. <script>
  31. import uniLoadMore from "@/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue"
  32. export default {
  33. components: {
  34. uniLoadMore
  35. },
  36. data() {
  37. return {
  38. searchValue: '',
  39. universityList: [],
  40. page: 1,
  41. limit: 10,
  42. status: 'more',
  43. contentText: {
  44. contentdown: '查看更多',
  45. contentrefresh: '加载中',
  46. contentnomore: '没有更多'
  47. },
  48. }
  49. },
  50. onLoad() {
  51. this.getUniversityList()
  52. },
  53. //下拉刷新
  54. onPullDownRefresh() {
  55. this.page = 1;
  56. uni.stopPullDownRefresh();
  57. this.universityList = [];
  58. this.getUniversityList()
  59. },
  60. //上拉加载
  61. onReachBottom() {
  62. if (this.status == 'noMore') {
  63. return;
  64. }
  65. this.page++;
  66. this.getUniversityList();
  67. },
  68. methods: {
  69. async getUniversityList() {
  70. let res = await this.$myHttp.post({
  71. url: this.$myHttp.urlMap.getVideoUniversityList,
  72. data: {
  73. page: this.page,
  74. limit: this.limit,
  75. name: this.searchValue
  76. },
  77. needLogin: true
  78. })
  79. if (res.code == 1) {
  80. if (this.page === 1) {
  81. this.universityList = res.data;
  82. } else {
  83. this.universityList = this.universityList.concat(res.data);
  84. }
  85. // 判断是否还有更多数据
  86. if (res.data.length < this.limit) {
  87. this.status = 'noMore'; // 没有更多数据
  88. } else {
  89. this.status = 'more'; // 还有更多数据
  90. }
  91. }
  92. },
  93. onInput(event) {
  94. console.log(event)
  95. this.searchValue = event.target.value;
  96. },
  97. // 监听搜索框输入事件
  98. onSearch() {
  99. this.page = 1; // 重新搜索从第一页开始
  100. this.universityList = [];
  101. this.getUniversityList();
  102. },
  103. go(id) {
  104. uni.navigateTo({
  105. url: '/pages/video/video?id=' + JSON.stringify(id)
  106. });
  107. }
  108. }
  109. }
  110. </script>

   

原创链接 在基础上做修改

uni-app 上拉加载 使用uni-ui 的 LoadMore 组件_uni-load-more 上拉没反应_O3ohn的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/ka_xingl/article/details/110083976

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

闽ICP备14008679号