react 监听页面滚动

摘要:
1.在ScrollCapture上html://Iftypescript,define dom type privatedom:HTMLDivElement | null//在ReactJS中,您只需要绑定onScrollCapture事件˂divstyle={{flex:1,height:‘10000px’,overflowY:‘scroll’,//滚动元素需要有一个滚动条overflowX:‘hidden’,

1. onScrollCapture

html:

// 如果使用typescript, 定义dom类型 
private dom: HTMLDivElement | null

// ReactJS中,对Div监听只需要绑定 onScrollCapture事件

<div
    style={{
           flex: 1,
           height: '10000px',                    
           overflowY: 'scroll',   // 滚动元素需有滚动条
           overflowX: 'hidden',                   
         }}
     ref={dom => {this.dom = dom}}
     onScrollCapture={() => this.handleOnScroll()}
    >
    。。。

 </div>

js: 

// 监听页面滚动

private handleOnScroll = () => {
    let flag = false
    if (this.dom) {
      const contentScrollTop = this.dom.scrollTop
      if (contentScrollTop >= 500) {
        flag = true
      }
      this.setState({
        flag
       }, () => {
        // todo  根据flag 去改变样式或...
        })
    }
  }    

2. addEventListener

  useEffect(() => {
    const scrollEle = document.getElementById("scrollDom") || document.body; // 获取滚动元素
    const handleScroll = (e) => {
       // todo  
    }
    scrollEle.addEventListener("scroll", handleScroll);
    return () => {
      scrollEle.removeEventListener("scroll", handleScroll);
    };
  }, [])

免责声明:文章转载自《react 监听页面滚动》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇对github上面的项目进行更新AppBar 自定义顶部导航按钮 图标、颜色 以及 TabBar 定义顶部 Tab 切换 通过TabController 定义TabBar下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

解决vscode开发react项目没有代码提示问题

1.安装插件 在插件库搜索:Reactjs code snippets,进行安装  2.禁用自动类型获取 打开设置,在搜索栏输入:@tag:usesOnlineServices,找到TypeScript:Disable Automatic Type Acquistion,将其禁用  3.解决JSX中tab没有自动补全 在JSX中HTML标签按tab键没...

FUSE简介

什么是FUSE 传统的文件系统是操作系统的一部分,放在操作系统内核里面实现。Fuse(Filesystem in Userspace), 一个用户空间文件系统框架,提供给我们一组用于实现一个文件系统的API,使我们可以在用户态实现自已的文件系统。 FUSE的优缺点 1)传统文件系统都是定义在操作系统内核层面上的,要操作系统识别一种新的文件系统,必需重写内核...

STL之stack栈

概述 栈(statck)这种数据结构在计算机中是相当出名的。 栈中的数据是先进后出的(First In Last Out, FILO)。栈只有一个出口,允许新增元素(只能在栈顶上增加)、移出元素(只能移出栈顶元素)、取得栈顶元素等操作。 在STL中,栈是以别的容器作为底部结构,再将接口改变,使之符合栈的特性就可以了。因此实现非常的方便。 namespace...

EasyUI基础入门之Parser(解析器)

前言      JQuery EasyUI提供的组件包括功能强大的DataGrid,TreeGrid、面板、下拉组合等。用户可以组合使用这些组件,也可以单独使用其中一个。(使用的形式是以插件的方式提供的) EasyUI体系结构      EasyUI所有的插件主要分为六大部分。Base基础、Layout布局、Menu&Button、Form表单、...

eldialog添加拖拽功能

import Vue from 'vue' Vue.directive('dialogDrag', { bind(el, binding, vnode, oldVnode) { const dialogHeaderEl = el.querySelector('.el-dialog__header') const dragDom = e...

JSX设置CSS样式详解

JSX设置CSS样式详解 1. 使用className设置样式(CSS的其他选择器也是同理) (1)定义一个CSS文件style.css,和普通CSS一样定义class选择器 .sty1{//和普通CSS一样定义class选择器 background-color: red; color: white; font-size: 40px...