vue模拟聊天页面列表:滚动到底部,滚动到顶部触发加载更多

先看下效果:

在这里插入图片描述

代码:

<template><div><div style="text-align: center"><button @click="scrollTop">滚动到顶部</button><button @click="scrollBottom">滚动到底部</button></div><div class="scroll_wrap" ref="scrollWrap"><div v-for="(s, i) in list" :key="i" class="item">{{ s }}</div></div></div>
</template><script>
export default {data() {return {list: [],noMore: false, //暂无更多数据};},mounted() {this.initData();this.scrollBottom();this.$refs.scrollWrap.addEventListener("scroll", this.onScrollListener);},methods: {//滚动监听onScrollListener() {if (this.$refs.scrollWrap.scrollTop == 0) {console.log("滚动到顶部了");if (this.noMore) {this.$baseUI.showToast("暂无更多数据");return;}this.$baseUI.showLoading();//模拟耗时任务从接口获取数据setTimeout(() => {const scrollWrap = this.$refs.scrollWrap;let h1 = scrollWrap.scrollHeight;console.log("h1======" + h1);this.loadMoreData();this.$baseUI.hideLoading();//list更新后,等待页面渲染完毕再去拿scrollHeight,否则拿到的是之前的this.$nextTick(() => {let h2 = scrollWrap.scrollHeight;console.log("h======" + h2);//顶部在原先基础上往下滚动50px,露出新加载数据的一点	scrollWrap.scrollTo({top: h2 - h1 - 50,behavior: "instant", //auto-自动滚动 instant-瞬间滚动 smooth-平滑滚动});});}, 1000);}},//滚动到顶部scrollTop() {this.$nextTick(() => {const scrollWrap = this.$refs.scrollWrap;scrollWrap.scrollTo({top: 0,behavior: "smooth", //auto-自动滚动 instant-瞬间滚动 smooth-平滑滚动});});},//滚动到底部scrollBottom() {this.$nextTick(() => {let scrollWrap = this.$refs.scrollWrap;scrollWrap.scrollTo({top: scrollWrap.scrollHeight,behavior: "smooth", //auto-自动滚动 instant-瞬间滚动 smooth-平滑滚动});});},//加载更多数据loadMoreData() {let arr = [];for (let i = this.list.length; i < 10 + this.list.length; i++) {arr.unshift("data --- " + i);}this.list = [...arr, ...this.list];if (this.list.length == 40) {this.noMore = true; //数据全部加载完毕}},//初始化数据initData() {for (let i = 0; i < 20; i++) {this.list.unshift("data --- " + i);}},},beforeDestroy() {this.$refs.scrollWrap.removeEventListener("scroll", this.onScrollListener);},
};
</script><style lang="less" scoped>
.scroll_wrap {width: 300px;height: 500px;position: absolute;top: 30px;left: 50%;transform: translateX(-50%);border: 1px solid #333;overflow: auto;.item {height: 50px;line-height: 50px;padding-left: 15px;border-bottom: 1px solid #e4e4e4;}
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/245800.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win10安装redis并配置加自启动(采用官方推荐unix子系统)

记录&#xff0c;为啥有msi安装包&#xff0c;还这么麻烦的用linux版本redis的安装方式&#xff0c;是因为从github上下载别人制作的msi报毒&#xff0c;还不止一处&#xff0c;这种链接数据库的东西&#xff0c;用别人加工过的&#xff0c;都报毒了还用就是傻逼了。 所以采用…

【计算机网络】协议,电路交换,分组交换

定义了在两个或多个通信实体之间交换的报文格式和次序,以及报文发送和/或接收一个报文或其他事件所采取的动作.网络边缘: 端系统 (因为处在因特网的边缘) 主机 端系统 客户 client服务器 server今天大部分服务器都属于大型数据中心(data center)接入网(access network) 指将端…

【webrtc】neteq测试工程

设置git代理 $ git config --global http.https://github.com.proxy socks5://127.0.0.1:7890 git config --global https.https://github.com.proxy socks5://127.0.0.1:7890导入cmake直接构建 win32 debug v143 编译opus Build started...

数据分析的理念、流程、方法、工具(上)

一、数据的价值 1、数据驱动企业运营 从电商平台的「猜你喜欢」到音乐平台的「心动模式」&#xff0c;大数据已经渗透到了我们生活的每一个场景。不论是互联网行业&#xff0c;还是零售业、制造业等&#xff0c;各行各业都在依托互联网大数据&#xff08;数据采集、数据存储、…

leetcode hot100 全排列

在本题中&#xff0c;是要求我们求一个不重复数组的全排列&#xff0c;那么全排列&#xff0c;一定是长度和数组长度一致的&#xff0c;并且&#xff0c;排列问题是有顺序的&#xff0c;即1&#xff0c;2&#xff0c;3和1&#xff0c;3&#xff0c;2是两个不同的排列。 那么&a…

预处理详解1❤

一&#xff1a;预定义符号 C语言中设置了一些预定义符号&#xff0c;它们可以直接使用&#xff0c;同时预定义符号是在预处理期间处理的。 以下就是相关的预处理符号的作用。 二&#xff1a;#define定义常量 首先基本的语法是 #define name stuff 相对比较简单&#xff…

CSDN年度报告图片卡通小人收集

摘要&#xff1a;CSDN推出的年度报告真的太赞了&#xff0c;还定制了诸如“情感的编织者”“敏锐的激励者”“灵感的捕捉者”“组织的表达者”“洞悉的指挥家”“心灵的领航员”“生动的记录者”“温暖的叙述者”“理性的探索者”等等精准且浪漫的标签&#xff0c;加上非常有灵…

【Web】CTFSHOW SQL注入刷题记录(上)

目录 无过滤注入 web171 web172 web173 web174 web175 时间盲注 写马 过滤注入 web176 web177 web178 web179 web180 web181-182 web183 web184 web185-186 web187 web188 web189 web190 布尔盲注 web191 web192 web193 web194 堆叠注入 web195 …

Stable Diffusion插件Recolor实现黑白照片上色

今天跟大家分享一个使用Recolor插件通过SD实现老旧照片轻松变彩色&#xff0c;Recolor翻译过来的含义就是重上色&#xff0c;该模型可以保持图片的构图&#xff0c;它只会负责上色&#xff0c;图片不会发生任何变化。 一&#xff1a;插件下载地址 https://github.com/pkuliyi…

OSPF协议解析及相关技术探索(C/C++代码实现)

OSPF&#xff08;开放最短路径优先&#xff09;是一种用于自治系统&#xff08;AS&#xff09;内部的路由协议&#xff0c;它是基于链路状态算法的。OSPF的设计目的是为了提供一种可扩展、快速收敛和高效的路由解决方案。 OSPF概念和特点 概念 自治系统&#xff08;AS&#…

战略合作 | IAR全面支持云途车规级MCU

IAR嵌入式开发解决方案现已全面支持云途半导体YTM32系列MCU&#xff0c;携手合作伙伴共同助力高端创新应用的开发 中国&#xff0c;上海 – 2024年1月26日 – 嵌入式开发软件和服务的全球领导者IAR与知名国产汽车芯片公司江苏云途半导体有限公司&#xff08;以下简称“云途半导…

JavaScript学习-原型和原型链

原型和原型链 示例代码 //创建一个Person类 class Person {constructor(name) {this.name name;}drink() {console.log(喝水);} } //创建一个Teacher类&#xff0c;继承Person class Teacher extends Person {constructor(name, subject) {super(name);this.subject subjec…

react 实现页面状态缓存(keep-alive)

前言&#xff1a; 因为 react、vue都是单页面应用&#xff0c;路由跳转时&#xff0c;就会销毁上一个页面的组件。但是有些项目不想被销毁&#xff0c;想保存状态。 比如&#xff1a;h5项目跳转其他页面返回时&#xff0c;页面状态不丢失。设想一个 页面我滑倒了中间&#xf…

Linux(2)——Linux中的Vim编辑器:从入门到精通

Linux中的Vim编辑器&#xff1a;从入门到精通 插播&#xff01;插播&#xff01;插播&#xff01;亲爱的朋友们&#xff0c;我们的Cmake/Makefile/Shell这三个课程上线啦&#xff01;感兴趣的小伙伴可以去下面的链接学习哦~ 构建工具大师-CSDN程序员研修院 一、Vim的基本概念…

量子网络是什么

量子网络是基于量子力学规律对量子信息进行存储、处理和传输的物理装置&#xff0c;是实现量子通讯和大规模量子计算的基础。清华大学研究团队利用同种离子的双类型量子比特编码&#xff0c;在国际上首次实现无串扰的量子网络节点&#xff0c;对未来实现量子通讯和大规模量子计…

蓝桥杯备战——3.定时器前后台

1.STC15F2k61S2的定时器 阅读STC15系列的手册&#xff0c;我们可以看到跟STC89C52RC的定时器还是有不同之处的&#xff1a; 由上图可以看到我们可以通过AUXR寄存器直接设置定时器的1T/12T模式了 在定时器0/1模式上也可以设置为16位自动重装载。 另外需要注意IAP15F2K61S2只有…

Unity中实现合理塔防寻路机制

前言 在一款TD游戏中,最重要的单位就两大类:防御塔(Tower)和敌人单位(Enemy)。在处理敌人单位的AI行为时,最基本也是最重要的就是自动寻路。在各式TD游戏中,防御塔的攻击方式以及敌人单位的Buff机制往往是能做出差异化的地方;而在寻路问题上,几乎是没有差异的,面对…

Kettle-Docker部署+Sqlserver数据同步Mysql+Start定时任务

一. 背景介绍 1. ETL是什么 ETL&#xff08;Extract-Transform-Load&#xff09;&#xff0c;即数据抽取、转换、装载的过程。它是一种思想&#xff0c;主要是说&#xff0c;从不同的数据源获取数据&#xff0c;并通过对数据进行处理&#xff08;格式&#xff0c;协议等转换&a…

unity学习笔记----游戏练习07

一、僵尸攻击和植物的掉血和销毁 当僵尸接触到植物开始攻击时会持续削减植物的血量&#xff0c;当植物血量为零时就销毁当前植物。 在plantManager中&#xff0c; 为植物添加一个血量HP 100&#xff0c; public int HP 100; 在写一个减少血量的方法&#xff0c;来减少血…

NC65中间件能启动,前端客户端启动失败,加载异常,卡住(org.owasp.esapi)

控制台输出错误 ESAPI.properties could not be loaded by any means. Fail.SecurityConfiguration class(org.owasp.esapi.reference.DefaultSecurityConfiguration) CTOR threw exception.效果图&#xff1a; 解决方案 添加如下参数&#xff1a; -Dorg.owasp.esapi.resou…