react+ts封装返回顶部组件

组件代码

import React, { Component } from 'react';

class index extends Component {
    constructor(props:any){
        super(props)
        this.state={
            show:false
        }
        this.onScroll = this.onScroll.bind(this)
    }
    onScroll = () => {
        const {show}:any=this.state
        if (document.documentElement.scrollTop > 100) {
          this.setState({ show: true })
        } else{
          this.setState({ show: false })
        }
      }
    scrollToTop = () => {
        let scrollToptimer = setInterval(function() {
            var top = document.body.scrollTop || document.documentElement.scrollTop;
            var speed = top / 16;
            document.documentElement.scrollTop -= speed;
            if (top == 0) {
              clearInterval(scrollToptimer);
            }
          }, 5);
    }
    componentDidMount(){
      window.onscroll = this.onScroll;
    }
    render() {
        const {show}:any=this.state
        return (
            <div>

                {
                    show&&<div onClick={()=>{this.scrollToTop()}} className='fanhui'><img src={require("../../zyb_imgs/back_top_Z.png").default} alt="" /></div>
                }
                
            </div>
        );
    }
}

export default index;

组件样式

.fanhui{
    position: fixed;
    bottom: 60px;
    right: 40px;
    width: 60px;
    height: 60px;
   img{
       display: block;
       width: 100%;
   }
}
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上流星&洒下星辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值