当前位置: 首页 > news >正文

封装一个上拉加载的组件(无限滚动)

一、封装
1.这个是在vue3环境下的封装
2.整体思路:
2.1传入一个elRef,其实就是一个使用页面的ref。
2.2也可以不传elRef,则默认滚动的是window。

import { onMounted, onUnmounted, ref } from 'vue';
import { throttle } from 'underscore';export default function useScroll(elRef) {let el = windowconst isReachBottm = ref(false)const clientHeight = ref(0)const scrollTop = ref(0)const scrollHeight = ref(0)const scrollListenerHandler = throttle(() => {if(el == window) {clientHeight.value = document.documentElement.clientHeight;  // 当前浏览器窗口的“可视区域”的高度scrollTop.value = document.documentElement.scrollTop;  // 用于获取文档(通常是 HTML 文档)相对于其顶部的滚动距离scrollHeight.value = document.documentElement.scrollHeight;  // 获取到的是整个 HTML 文档的高度,包括所有可见和不可见的内容(即滚动条可滚动的总高度)}else {clientHeight.value = el.clientHeight;scrollTop.value = el.scrollTop;scrollHeight.value = el.scrollHeight;}if (clientHeight.value + scrollTop.value >= scrollHeight.value) {isReachBottm.value = true}}, 100)onMounted(() => {if(elRef) el = elRef.valueel.addEventListener("scroll", scrollListenerHandler)})onUnmounted(() => {el.removeEventListener("scroll", scrollListenerHandler)})return { isReachBottm, clientHeight, scrollTop, scrollHeight }
}

二、使用

import { watch, ref, computed } from 'vue';
import useScroll from '@/hooks/useScroll';
const { isReachBottm, clientHeight, scrollTop, scrollHeight } = useScroll()watch(isReachBottm, (newValue) => {if (newValue) {homeStore.fetchHouselistData()isReachBottm.value = false}
})const isShowSearchBar = computed(() => {return scrollTop.value >= 350
})

相关文章:

封装一个上拉加载的组件(无限滚动)

一、封装 1.这个是在vue3环境下的封装 2.整体思路: 2.1传入一个elRef,其实就是一个使用页面的ref。 2.2也可以不传elRef,则默认滚动的是window。 import { onMounted, onUnmounted, ref } from vue; import { throttle } from underscore;ex…...

WHAT - 高性能和内存安全的 Rust(二)

目录 1. 所有权(Ownership)2. 借用(Borrowing)不可变借用可变借用 3. 可变性(Mutability)4. 作用域(Scope)综合示例 了解 Rust 的所有权(ownership)、借用&am…...

办理河南建筑工程乙级设计资质的流程与要点

办理河南建筑工程乙级设计资质的流程与要点 办理河南建筑工程乙级设计资质的流程与要点主要包括以下几个方面: 流程: 工商注册与资质规划:确保企业具有独立法人资格,完成工商注册,并明确乙级设计资质的具体要求&…...

分类算法和回归算法区别

分类算法和回归算法在机器学习中扮演着不同的角色,它们的主要区别体现在输出类型、应用场景以及算法目标上。以下是对两者区别和使用场景的详细分析: 一、区别 1.输出类型: 分类算法:输出是离散的类别标签,通常表示为…...

利用Frp实现内网穿透(docker实现)

文章目录 1、WSL子系统配置2、腾讯云服务器安装frps2.1、创建配置文件2.2 、创建frps容器 3、WSL2子系统Centos服务器安装frpc服务3.1、安装docker3.2、创建配置文件3.3 、创建frpc容器 4、WSL2子系统Centos服务器安装nginx服务 环境配置:一台公网服务器&#xff08…...

怎么用Excel生成标签打印模板,自动生成二维码

环境: EXCEL2021 16.0 问题描述: 怎么用excel生成标签打印模板自动生成二维码 解决方案: 在Excel中生成标签打印模板并自动生成二维码,可以通过以下几个步骤完成: 1. 准备数据 首先,确保你的Excel表…...

java基于ssm+jsp 美食推荐管理系统

1前台首页功能模块 美食推荐管理系统,在系统首页可以查看首页、热门美食、美食教程、美食店铺、美食社区、美食资讯、我的、跳转到后台等内容,如图1所示。 图1前台首页功能界面图 用户注册,在注册页面可以填写用户名、密码、姓名、联系电话等…...

数据分析:置换检验Permutation Test

欢迎大家关注全网生信学习者系列: WX公zhong号:生信学习者Xiao hong书:生信学习者知hu:生信学习者CDSN:生信学习者2 介绍 置换检验是一种非参数统计方法,它不依赖于数据的分布形态,因此特别适…...

【React】使用Token做路由权限控制

在components/AuthRoute/index.js中 import { getToken } from /utils import { Navigate } from react-router-domconst AuthRoute ({ children }) > {const isToken getToken()if (isToken) {return <>{children}</>} else {return <Navigate to"/…...

机器学习周记(第四十四周:Robformer)2024.6.17~2024.6.23

目录 摘要ABSTRACT1 论文信息1.1 论文标题1.2 论文摘要1.3 论文引言1.4 论文贡献 2 论文模型2.1 问题描述2.2 Robformer2.2.1 Encoder2.2.2 Decoder 2.3 鲁棒序列分解模块2.4 季节性成分调整模块 摘要 本周阅读了一篇利用改进 Transformer 进行长时间序列预测的论文。论文模型…...

JAVA学习笔记DAY10——SpringBoot基础

文章目录 SpringBoot3 介绍SpringBoot 快速入门SpringBootApplication SpringBoot 配置文件统一配置管理Yaml 配置优势tips SpringBoot 整合 SpringMVC静态资源拦截器 interceptor SpringBoot 整合 DruidSpringBoot 整合 MybatisSpringBoot 整合 tx aopSpringBoot 打包 SpringB…...

如何在Android中实现多线程与线程池?

目录 一、Android介绍二、什么是多线程三、什么是线程池四、如何在Android中实现多线程与线程池 一、Android介绍 Android是一种基于Linux内核的开源操作系统&#xff0c;由Google公司领导开发。它最初于2007年发布&#xff0c;旨在为移动设备提供一种统一、可扩展的操作系统。…...

SCI绘图【1】-不同颜色表示密度和差异--密度图

参考资料&#xff1a;密度图&#xff08;Density Plot&#xff09; - 数据可视化图表 - 数字孪生百科 密度图是快速观察变量数值分布的有效方法之一。通常情况下&#xff0c;会根据两个变量将平面绘图区域分为非常多的子区域&#xff0c;之后以不同颜色表示落在该区域上样本的…...

C语言 while循环1

在C语言里有3种循环&#xff1a;while循环 do while 循环 for循环 while语句 //while语法结构 while&#xff08;表达式&#xff09;循环语句; 比如在屏幕上打印1-10 在while循环中 break用于永久的终止循环 在while循环中&#xff0c;continue的作用是跳过本次循环 …...

[C++][数据结构][LRU Cache]详细讲解

目录 1.什么是LRU Cache&#xff1f;2.LRU Cache实现 1.什么是LRU Cache&#xff1f; LRU是Least Recently Used的缩写&#xff0c;意思是最近最少使用&#xff0c;它是一种Cache替换算法。什么是 Cache&#xff1f; 狭义的Cache指的是位于CPU和主存间的快速RAM 通常它不像系统…...

怎样激励员工积极应用新版FMEA培训后的知识?

在快节奏的职场环境中&#xff0c;新版FMEA&#xff08;失效模式与影响分析&#xff09;的培训无疑是提升员工技能、优化工作流程的重要一环。然而&#xff0c;如何让员工积极地将所学知识应用于实际工作中&#xff0c;却是一个值得深入探讨的问题。下面&#xff0c;深圳天行健…...

WDF驱动开发-WDF总线枚举(一)

支持在总线驱动程序中进行 PnP 和电源管理 某些设备永久插入系统&#xff0c;而其他设备可以在系统运行时插入和拔出电源。 总线驱动 必须识别并报告连接到其总线的设备&#xff0c;并且他们必须发现并报告系统中设备的到达和离开情况。 总线驱动程序标识和报告的设备称为总线…...

React useEffect 执行时机

默认情况下&#xff0c;Effect 在每次渲染&#xff08;包括初始渲染&#xff09;后运行。 如果 React 的所有依赖项都与上次渲染时的值相同&#xff0c;则将跳过本次 Effect。 useEffect(() > {// 这里的代码会在每次渲染后执行 });useEffect(() > {// 这里的代码只会在…...

centos7 根目录扩容

1、先检查一下磁盘空间 [rootlocalhost ~]# lsblk 二、使用fdisk创建新分区 [rootlocalhost ~]# fdisk /dev/vdb 1、输入 p &#xff0c;查看当前分区表&#xff1b; 2、输入 n &#xff0c;新建一个分区&#xff1b; 3、再输入 p &#xff0c;选择分区类型为主分区&#x…...

为什么要做Redis分区和分片

Redis分区&#xff08;Partitioning&#xff09;和分片&#xff08;Sharding&#xff09;是将数据分布在多个Redis实例或多个节点上的做法。这种技术用于提高性能、可扩展性和可用性。以下是执行Redis分区和分片的主要原因&#xff1a; 1. **提高吞吐量**&#xff1a; - 通…...

用Matlab和OptiSystem复现DFB激光器啁啾仿真:从公式到频谱对比的保姆级教程

用Matlab和OptiSystem复现DFB激光器啁啾仿真&#xff1a;从公式到频谱对比的保姆级教程 在光通信系统设计中&#xff0c;DFB&#xff08;分布式反馈&#xff09;激光器的啁啾效应一直是影响传输性能的关键因素。当工程师需要验证论文中的理论模型或优化实际系统参数时&#xff…...

089、机器人动力学:拉格朗日法

机器人动力学:拉格朗日法 从一次机械臂抖动说起 去年调试一台六轴协作机器人,末端负载从0.5kg换到2kg,位置环PID参数调了三轮,静态精度勉强达标。一跑轨迹,末端抖得像筛糠。同事说“加个低通滤波”,我试了,抖动小了,但轨迹跟踪滞后明显。后来翻出动力学模型,用拉格朗…...

Steam游戏清单一键下载:告别繁琐操作,3分钟搞定你的游戏库管理

Steam游戏清单一键下载&#xff1a;告别繁琐操作&#xff0c;3分钟搞定你的游戏库管理 【免费下载链接】Onekey Onekey Steam Depot Manifest Downloader 项目地址: https://gitcode.com/gh_mirrors/one/Onekey 还在为复杂的Steam游戏清单下载而烦恼吗&#xff1f;Oneke…...

2026 电子招投标全流程操作指南:环境搭建→签章→上传→解密全避坑

据安华招标 2025 年度电子招投标技术白皮书显示&#xff0c;全国公共资源交易平台电子标覆盖率已达98.7%&#xff0c;但因纯技术操作失误导致的废标率仍高达22%。其中环境配置错误、签章失效、解密失败三大问题&#xff0c;占所有技术类废标的85% 以上。很多企业投入数月打磨标…...

接口响应慢排查指南:从分层框架到实战优化

1. 问题定位&#xff1a;从现象到根源的排查框架接口响应慢&#xff0c;这几乎是每个后端开发者、运维工程师乃至测试同学都会遇到的“经典”问题。它不像一个明确的错误&#xff0c;会直接抛出异常或返回错误码&#xff0c;而是像一个隐形的性能瓶颈&#xff0c;悄无声息地拖慢…...

GEE入门实战:从云端概念到首个遥感分析

1. 初识Google Earth Engine&#xff08;GEE&#xff09; 第一次接触GEE时&#xff0c;我完全被它的云端处理能力震撼到了。想象一下&#xff0c;你不需要在本地安装任何软件&#xff0c;打开浏览器就能调用PB级别的遥感数据&#xff0c;还能直接在上面跑分析——这简直就是遥感…...

好用的昆明线上经营推广哪家好选

在数字化浪潮席卷的当下&#xff0c;昆明的企业和商家们越来越意识到线上经营推广的重要性。选择一家靠谱的线上经营推广公司&#xff0c;能够让企业在激烈的市场竞争中脱颖而出。那么&#xff0c;在昆明众多的推广公司中&#xff0c;哪家才是比较好的选择呢&#xff1f;今天&a…...

上蔡假发定制亲测:这家2026年稳

在假发定制领域&#xff0c;用户普遍面临三大核心挑战&#xff1a;其一&#xff0c;传统假发产品在逼真度与舒适度之间难以平衡。数据显示&#xff0c;超过65%的消费者反映佩戴假发后出现头皮闷热、出汗不适等问题&#xff0c;尤其在夏季或运动场景下&#xff0c;透气性与防水性…...

国民技术N32G030K8L7芯片,用MDK从官方FTP下载到点亮LED的保姆级教程

国民技术N32G030K8L7芯片开发实战&#xff1a;从资料获取到LED点亮的全流程指南 拿到一块全新的开发板时&#xff0c;那种既兴奋又忐忑的心情想必每位工程师都经历过。N32G030K8L7作为国民技术推出的高性价比MCU&#xff0c;凭借其出色的性能和丰富的外设资源&#xff0c;正成为…...

HBuilderX网站打包APP

下载HBuilderX安装包官网地址&#xff1a;https://www.dcloud.io/ 选择HBuilderX极客开发工具 点击DOWNLOAD 点击历史版本&#xff0c;这里为什么不下载最新的版本&#xff0c;是因为我一开始下载的最新版本&#xff0c;打包一直提示cannot find module babel-core 将HBuilder…...