React 监听滚动条变化,实现返回顶部效果

完成效果:        

实现思路:

        通过  window.addEventListener 来监听滚动条的变化

        window.addEventListener 有三个参数:

        第一个参数: 事件的类型 ,我们用的scorll

        第二个参数: 监听事件后,处理的函数

        第三个参数:布尔型,默认false (设置为true只在捕获阶段处理事件)

        使用hooks方法导入useRef, 给盒子绑定ref‘’

        通过  .current.scrollTop 获取页面到顶部的距离在做一系列操作

代码:

        

 给最外层盒子绑定ref

 

    const liha = useRef(null) //创建useRef 
    

    useEffect(() => {
        let one = window.addEventListener("scroll", scorePOI, true) //监听滚动条变化
        return () => {
            window.removeEventListener(one) //清除监听
        }
    }, [])
    //监听到滚动条变化,处理的函数
    function scorePOI() {
        if (liha.current.scrollTop > 0) {
            setzhan(true) //展示返回顶部按钮
        } else { 
            setzhan(false) //隐藏返回顶部按钮
        }
    }

    // 点击返回顶部触发的函数

    function fanhui() {
        let urlpoi = setInterval(() => {
            liha.current.scrollTop -= 5 //每次减5 ,有缓慢的效果
            if(liha.current.scrollTop === 0){ //如果已经返回到顶部 就清除定时器
                clearInterval(urlpoi)
            }
        }, 1);
    }

        

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以通过监听`window`对象的`scroll`事件来实现滚动条滚动时的操作。具体实现步骤如下: 1. 在组件的`state`中添加一个`showButton`属性,用来控制按钮的显示和隐藏。 2. 在组件的`componentDidMount`生命周期函数中,调用`window.addEventListener`方法,监听`scroll`事件。 3. 在监听回调函数中,获取当前滚动条的位置,判断是否需要显示按钮,并将`showButton`属性设置为相应的值。 4. 在组件的`render`函数中,根据`showButton`属性的值来决定是否渲染按钮。 示例代码如下: ```jsx import React, { Component } from 'react'; class ScrollButton extends Component { constructor(props) { super(props); this.state = { showButton: false }; this.handleScroll = this.handleScroll.bind(this); } componentDidMount() { window.addEventListener('scroll', this.handleScroll); } componentWillUnmount() { window.removeEventListener('scroll', this.handleScroll); } handleScroll() { const { showButton } = this.state; const scrollTop = document.documentElement.scrollTop || document.body.scrollTop; if (scrollTop > 100 && !showButton) { this.setState({ showButton: true }); } else if (scrollTop <= 100 && showButton) { this.setState({ showButton: false }); } } render() { const { showButton } = this.state; return ( <div> {showButton && <button onClick={this.handleClick}>回到顶部</button>} </div> ); } } export default ScrollButton; ``` 在上面的代码中,当滚动条滚动距离大于100时,显示按钮;当滚动条滚动距离小于等于100时,隐藏按钮。你可以根据实际需求来调整这个值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值