使用 React js 检测用户何时滚动到 div 底部

2023-11-24

我有一个包含不同部分的网站。我正在使用segment.io 来跟踪页面上的不同操作。如何检测用户是否滚动到 div 底部?我已经尝试过以下操作,但它似乎是在我滚动页面时立即触发的,而不是在 我到达了 div 的底部。

componentDidMount() {
  document.addEventListener('scroll', this.trackScrolling);
}

trackScrolling = () => {
  const wrappedElement = document.getElementById('header');
  if (wrappedElement.scrollHeight - wrappedElement.scrollTop === wrappedElement.clientHeight) {
    console.log('header bottom reached');
    document.removeEventListener('scroll', this.trackScrolling);
  }
};

一种更简单的方法是滚动高度, 滚动顶部, and 客户高度.

从总可滚动高度中减去滚动高度。如果这等于可见区域,那么您已经到达底部!

element.scrollHeight - element.scrollTop === element.clientHeight

在react中,只需向可滚动元素添加一个onScroll监听器,然后使用event.target在回调中。

class Scrollable extends Component {

  handleScroll = (e) => {
    const bottom = e.target.scrollHeight - e.target.scrollTop === e.target.clientHeight;
    if (bottom) { ... }
  }

  render() {
    return (
      <ScrollableElement onScroll={this.handleScroll}>
        <OverflowingContent />
      </ScrollableElement>
    );
  }
}

我发现这更直观,因为它处理可滚动元素本身,而不是window,并且它遵循正常的 React 处理方式(不使用 ids,忽略 DOM 节点)。

您还可以操纵方程来触发页面上方(例如,延迟加载内容/无限滚动)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 React js 检测用户何时滚动到 div 底部 的相关文章

  • 获取kendo下拉值的选定id

    如何从下拉列表中获取所选名称的 ID 当选择Apples然后得到了id1并选择Oranges then 2 这是简单的剑道下拉示例
  • 如何在React Native中重用React JS组件

    我是新来的React JS 我正在尝试构建一个网络应用程序 该应用程序也应该在移动设备 Android 和 IOS 上运行 因此考虑使用react js for web application并创建了一些组件 那么是否可以使用React j
  • 带标头认证的跨域请求

    我需要发送一个Get具有标头身份验证的跨域来源请求 它在 Chrome 和 Firefox 中工作正常 但在 Safari 和 IE 中遇到问题 同样在随机情况下它会返回 401 解决这个问题的最佳选择是什么 如果我正确理解了问题 您可以使
  • html5 画布上下文 .fillStyle 不起作用

    只是为了创建一个游戏而第一次尝试canvas 我显示了一个图像 但奇怪的是 fillStyle 方法似乎不起作用 至少画布背景在谷歌浏览器中仍然是白色的 请注意 在我的代码中 画布变量实际上是画布元素的二维上下文 也许这就是我让自己感到困惑
  • 将表格单元格添加到现有表格行,jQuery

    我正在尝试使用 jQuery 将值添加到表中 不幸的是 我不知道如何让 jQuery 将表单元格添加到现有行 例如 td a href key a td click function e e preventDefault testset k
  • 多个复选框 - 更改消息“如果要继续,请选中此框”

    我有一个多选复选框表单 我在其中添加了 JS 以确保访问者至少选择一个选项 div class form group options div
  • 如何使用 jQuery 定期更新页面上的日期/时间值?

    在此示例中 我有一个输入文本字段 其中包含使用 jQuery 设置的日期时间值 http jsfiddle net D4Hu9 http jsfiddle net D4Hu9 HTML
  • 字符串和数组泛型方法将来将被弃用

    在下面的链接 MDN 站点 中 它显示 字符串泛型是非标准的 已弃用 将来可能会被删除 请注意 如果不使用下面提供的填充程序 则不能跨浏览器依赖它们 他们所指的方法是否是他们在此声明下方提供的垫片中列出的方法 这是我见过的唯一对 字符串泛型
  • 在条件 for 循环中渲染 React

    我在网页中有静态信息 class MyStaticWebPage extends React Component render return
  • 使用本地文件作为

    是否可以使用用户硬盘中的音频文件作为srcHTML5 的属性
  • Bind 与 curry* 的 JavaScript 用法?

    我试图理解之间的区别curry vs bind 实施bind is 1 Function prototype bind function 2 3 var fn this 4 args Array prototype slice call a
  • 分页打印所有数据

    我在打印数据表中具有分页的所有数据时遇到问题 我已经做过研究并在此链接中发现了同样的问题 仅打印 https stackoverflow com questions 468881 print div id printarea div onl
  • 将画布图像保存到服务器

    我正在尝试将画布图像保存到服务器 我可以保存文件 但它始终是 0 字节 我的代码有什么问题吗 php
  • 点击超链接时调用 javascript 函数

    我正在 ASP NET 的 C 代码隐藏文件中动态创建超链接 我需要在客户端点击时调用 JavaScript 函数 我该如何做到这一点 仍然更整洁 而不是typical href or href javascript void or hre
  • 谷歌地图如何将图像添加到InfoWindow中

    您好 我正在尝试将图像添加到谷歌地图信息窗口中 我的代码就像这样的脚本 var ContactUs function return main function to initiate the module init function var
  • 为什么 (false || null) 返回 null,而 (null || false) 返回 false?

    为什么false null返回与以下不同的结果null false 我可以安全地依靠吗return myVar false如果 myVar 是其中之一 则返回 falsenull or false but true否则 所有组合 false
  • 在 Bootstrap 中的悬停中打开折叠选项卡

    我在 Bootstrap 中有折叠面板 单击选项卡标题即可打开该面板 我试图弄清楚如何使用鼠标悬停在选项卡的总宽度上来打开 但我没有得到它 下面是默认关闭的单个选项卡的代码 div class panel panel default sty
  • JavaScript 作为 HTML 属性是不好的做法吗?

    例子 https stackoverflow com a 372 89566 710887 https stackoverflow com a 37289566 710887 我看到这种情况越来越频繁地发生 我总是被教导要将 javascr
  • 比较断言中的函数输出类型

    我正在努力使用 chai mocha 和 JS DOM 编写测试断言 我有一个简单的函数 例如 function HtmlElement el this element el instanceof HTMLElement el docume
  • 获取 ES6 符号的描述

    我想知道是否有一种很好的方法来获取符号的描述 例如 var s Symbol 5 toString 的默认实现将简单地打印 符号 5 我想找到一种方法来提取实际描述 即 5 Symbol description https develope

随机推荐

  • 覆盖溢出:用 z-index 隐藏

    我正在使用 coda bubble jquery 插件 我需要让我的气泡在溢出隐藏 div 中弹出 这是我的示例代码
  • jQuery jqGrid 当编辑行完成时显示消息

    我在这里关注本教程http www trirand com blog jqgrid jqgrid html在 实时数据操作 gt 编辑行 我的网格从脚本接收数据a php 之后用户可以通过jqGrid修改这个数据 jqGrid修改数据后会将
  • 如果从函数返回,局部变量的成员子对象也会被移动吗?

    C 11 标准规定 如果满足复制省略的条件 12 8 31 实施应处理returned 局部左值变量和函数参数 首先作为右值 移动 如果重载解析未按详细说明成功 则应将其视为左值 复制 12 8 class copy p32 当满足或将满足
  • 在 R 中将列表转换为数据帧

    所以我有一个清单 说 L1 lt list 1 10 5 14 10 19 现在我试图将列表的输出作为数据帧 以便我的输出看起来 1 1 2 3 4 5 6 7 8 9 10 2 5 6 7 8 9 10 11 12 13 14 3 10
  • 什么是“跨度”以及何时应该使用“跨度”?

    最近我收到了使用建议span
  • php str_getcsv 数组问题

    我正在上传 csv 文件 然后使用 str getcsv 解析它 一切都很好 只是我需要一种方法来循环它们 理想情况下 如果数组返回并看起来像这样 那就太好了 Array 1 gt Array 0 gt 1 first id in csv
  • C 宏:将数字转换为字符串

    我有一个表 定义 5x7 点显示屏上的符号外观 就像是 extern UINT8 symbols 5 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x5F 0x0 0x0 0x0 0x7 0x0 0x7 0x0 0x14 0x7
  • 如何使用 Phantomjs 向下滚动加载动态内容

    我试图从当用户向下滚动到底部 无限滚动 时动态生成内容的页面中抓取链接 我尝试过使用 Phantomjs 做不同的事情 但无法收集首页之外的链接 假设加载内容的底部元素有类 has more items 它一直可用 直到滚动时加载最终内容
  • NSWindow - 显示始终位于当前窗口顶部的新窗口

    我希望我的 NSWindow 显示始终位于当前窗口顶部的新窗口 它们不应该位于其他窗口的顶部 此外 当原始窗口移动时 它们不应该移动 我怎样才能做到这一点 Use NSWindow s addChildWindow ordered or s
  • 即将发布的 Java 8 版本中的虚拟扩展方法

    当我看到类似的代码片段时 interface A void a void b default System out println b void c final System out println c I have one questio
  • 如何具体化 Prolog 的回溯状态以执行与 Clojure 中的“lazy seq”相同的任务?

    这是用 Clojure 编写的数字快速排序算法 它基本上是快速排序算法 Clojure 的乐趣 第 2 版 第 133 页 我稍微修改了它以 希望 更好的可读性 因为原始版本感觉有点太紧凑 defn qsort inner work laz
  • Python 中 exit(0) 和 exit(1) 的区别

    有什么区别exit 0 and exit 1 在Python中 我尝试环顾四周 但没有找到关于这些方面的具体问题 如果已经回答了 一个链接就足够了 0 和 1 是退出代码 exit 0 意味着干净退出 没有任何错误 问题 exit 1 意味
  • wav 文件中特定点的分贝值

    我正在尝试测量 wav 文件的引入和引出 最好是第一和最后 5 秒左右 我基本上是想指定一个数值 表示 这首歌有一个缓慢的开头 或 这首歌有一个突然的结束 我的想法是获得 dB 值的斜率 但我似乎找不到可以提供 dB 值的 Linux 命令
  • 为什么重写方法并向参数类型添加 const 有效? [复制]

    这个问题在这里已经有答案了 考虑以下示例 include
  • Ember 数据嵌套模型

    我在使用 NDB 的 Google App Engine 项目中使用 EmberJs 和 Ember Data 在数据库中 我有 Host Probe 和 Check 实体 只要我有 REST api 数据库模型并不重要 但为了清楚起见 这
  • 检测拼写错误的单词

    我有一份机场名称列表 我的用户可以输入一个机场名称来选择它进行进一步处理 您将如何处理拼写错误的名字并提出建议列表 Look up 编辑距离根据给定的用户输入匹配正确的名称
  • 删除冲突的样式 - Bootstrap 和 Google 自定义搜索

    看看我网站上的下面的图片 www kokorugs com 我正在使用 Bootstrap 并且我相信存在一些冲突的 CSS 样式 问题是我看不到 Google 的 CSS 也不知道如何覆盖这个样式 我的代码 来自谷歌 如下
  • SimpleITK 调整图像大小

    我有一套 3D 书籍正在阅读SimpleITK import SimpleITK as sitk for filename in filenames image sitk ReadImage filename 每卷都有不同的大小 间距 来源
  • Laravel 5 - 未找到“DB”类

    I have ChatController位于app http controllers像这样 namespace App Http Controllers use App Http Controllers Controller use Ra
  • 使用 React js 检测用户何时滚动到 div 底部

    我有一个包含不同部分的网站 我正在使用segment io 来跟踪页面上的不同操作 如何检测用户是否滚动到 div 底部 我已经尝试过以下操作 但它似乎是在我滚动页面时立即触发的 而不是在 我到达了 div 的底部 componentDid