Vue实现无限滚动加载更多内容(懒加载)或实现查看更多按钮

news/2024/7/7 21:34:04

在Vue中实现无限滚动加载更多内容,通常可以使用vue-infinite-loading插件。以下是一个简单的例子:

1、首先,安装vue-infinite-loading:

npm install vue-infinite-loading --save

2、在Vue组件中使用它:

<template>
  <div>
    <ul>
      <li v-for="item in items" :key="item.id">{{ item.content }}</li>
    </ul>
    <infinite-loading @infinite="infiniteHandler">
      <div slot="no-more">没有更多内容了</div>
    </infinite-loading>
  </div>
</template>
 
<script>
import InfiniteLoading from 'vue-infinite-loading';
 
export default {
  components: {
    InfiniteLoading,
  },
  data() {
    return {
      items: [], // 列表内容
      page: 1, // 当前页数
      hasMore: true, // 是否还有更多内容
    };
  },
  methods: {
    // 无限滚动加载的处理函数
    infiniteHandler($state) {
      // 模拟异步获取数据
      setTimeout(() => {
        if (this.page > 3) {
          // 模拟没有更多内容了
          $state.complete();
          this.hasMore = false;
        } else {
          // 模拟获取新的内容
          const moreItems = []; // 假设这是从服务器获取的新内容
          this.items = this.items.concat(moreItems);
          $state.loaded(); // 告诉插件加载完毕
          this.page++;
        }
      }, 1000);
    },
  },
};
</script>

在这个例子中,infiniteHandler方法会在组件创建时由infinite-loading触发。当用户滚动到页面底部时,会调用这个方法。在这个方法中,我们模拟了异步获取新内容的过程,并通过 s t a t e . l o a d e d ( ) 通知 i n f i n i t e − l o a d i n g 加载完毕。如果没有更多内容可加载,则通过 state.loaded()通知infinite-loading加载完毕。如果没有更多内容可加载,则通过 state.loaded()通知infiniteloading加载完毕。如果没有更多内容可加载,则通过state.complete()告知插件不再需要加载,并显示slot="no-more"中的内容。

3、实现查看更多按钮

如果是要手动加载的,通过点击更多按钮加载,思路简单点:
标签一样使用v-for遍历。

 <li v-for="item in items" :key="item.id">{{ item.content }}</li>

查看更多按钮

<el-button class="button" type="primary" round @click="loadMore()"  :disabled="isDisabled">查看更多</el-button>

而更多按钮点击事件只需把内容数组与新内容数组进行拼接即可。

		methods:{
			loadMore(){
				this.items = this.items.concat(moreItems);
			}
		}

http://lihuaxi.xjx100.cn/news/2219846.html

相关文章

【AICFD教程】汽车外气动仿真,小白学CFD的入门案例

【视频教程】 【教程】汽车外气动仿真&#xff0c;小白学CFD的入门案例 【文字教程】 1. 案例背景 1.1 学习目标 本案例针对某汽车仿真模型&#xff0c;在车速为40m/s时进行了汽车外流场的数值模拟。 本案例教程旨在演示AICFD中以下场景与功能的操作&#xff1a; a. 单域外…

日语 9 10

9. トラブル trouble 荷物 荷物 荷物 荷物 荷物 にもつ 行李 同僚 同僚 同僚 同僚 同僚 どうりょう 同事 出 黒 申し訳 で  くろ  もうしわけ 入国 入国 入国 入国 入国 にゅうこく 入境 相通 相通 相通 相通 相通 あいつう 若者 若者 若者 若…

MySQl基础入门⑯【操作视图】完结

上一边文章内容 表准备 CREATE TABLE Students (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100),email VARCHAR(255),major VARCHAR(100),score int,phone_number VARCHAR(20),entry_year INT,salary DECIMAL(10, 2) );数据准备 INSERT INTO Students (id, name, ema…

视频太大了怎么缩小内存

我们在分享视频的时候&#xff0c;有时候会遇到过视频文件太大&#xff0c;无法发送或者上传的情况&#xff0c;别担心&#xff0c;今天我就来给大家分享一个简单有效的方法&#xff0c;让你的视频变得更小&#xff0c;更方便分享&#xff01; 打开 “51视频处理官网 的网站。上…

前端开发之TCP与UDP

上一篇&#x1f449;: 前端开发之性能优化 TCP与UDP 三次握手 1. 初始状态&#xff1a; 客户端开始时处于CLOSED状态&#xff0c;表明没有活动的连接。服务器监听特定端口&#xff0c;处于LISTEN状态&#xff0c;等待连接请求。 2. 第一次握手&#xff08;SYN_SENT状态&am…

工程项目全生命周期管理系统企智汇一站式解决方案!

在当今竞争激烈的工程行业&#xff0c;实现工程项目的全生命周期管理已成为企业提升效率、降低成本、确保质量并赢得市场竞争的关键。企智汇的工程项目管理系统解决方案致力于助力工程企业实现全面、精细化的项目全生命周期管理&#xff0c;确保从项目启动到竣工交付的每一个环…

几个小实验

小实验 shh远程管理 ssh是一种安全通道协议&#xff0c;只能用来实现字符界面的远程登录。远程复制&#xff0c;远程文本传输。 ssh对通信双方的数据进行了加密。 用户名和密码登录 密钥对认证方式&#xff08;可以实现免密登录&#xff09; ssh 22 网络层 传输层 数据传…

C语言程序设计-9 预处理命令

9.1 概述 在前面各章中&#xff0c;已多次使用过以“#”号开头的预处理命令。如包含命令#include&#xff0c;宏定 义命令#define 等。在源程序中这些命令都放在函数之外&#xff0c;而且一般都放在源文件的前面&#xff0c; 它们称为预处理部分。 所谓预处理是指在进行编译的…