reactjs - 添加滚动到顶部按钮不适用于反应?
问题描述
问题:
我对反应的东西很陌生。我正在创建一个 Web 应用程序。在那里,我实现了一种像这种方式滚动到顶部的方式。
import React, { PureComponent } from "react";
import "../../../assets/css/bootstrap.min.css";
import "../../../assets/css/demo.css";
import "../../../assets/css/light-bootstrap-dashboard.css";
import "../../../assets/css/font-awesome-min.css";
import "../../../assets/css/fonts.css";
import "../../../assets/css/dashbord.css";
import Sidebar from "../Templates/Sidebar";
import Header from "../Templates/Header";
import Footer from "../Templates/Footer";
import Dashbordcards from "./Dashbordcards";
import Graphs from "./Graphs/Graphs";
import ActivityFeed from "./ActivityFeed";
import { Row, Col, Button } from "react-bootstrap";
class Dashboard extends PureComponent {
componentDidMount() {
window.addEventListener("scroll", this.handeleScroll());
}
handeleScroll() {
if (
document.body.scrollTop > 20 ||
document.documentElement.scrollTop > 20
) {
document.getElementById("myBtn").style.display = "block";
} else {
document.getElementById("myBtn").style.display = "none";
}
}
topFunction(){
document.body.scrollTop = 0;
document.documentElement.scrollTop = 0;
}
render() {
return (
<div className="wrapper">
<Button onclick={this.topFunction} id="myBtn" title="Go to top">
Top
</Button>
<div className="sidebar-background">
<Sidebar />
</div>
<div className="main-panel">
<Header name="Dashbord" />
<div class="content">
<Dashbordcards />
<Graphs />
<ActivityFeed />
</div>
<Footer />
</div>
</div>
);
}
}
export default Dashboard;
但它没有按预期工作。我在堆栈溢出中尝试了很多示例以及通过 google 搜索找到的示例。但这些都不能完全满足我的要求。有人可以通过修改我的代码并使其可行来帮助我解决这个问题吗?非常感谢!
解决方案
代替document.body.scroll
,您可以使用window.pageYOffset
获取页面的当前滚动位置。
要滚动到顶部,请使用:window.scrollTo(0,0)
。
如果您想以流畅的行为滚动,您可以使用:window.scrollTo({top: 0, behavior: "smooth"})
.
推荐阅读
- netsuite - 工作流操作脚本无法设置字段值
- java - 如何使用子覆盖的 equals() 方法检查父 ArrayList 中子对象的相等性
- reactjs - 使用酶和反应钩子修改计数器不起作用
- python-3.x - 在 Python 中删除 %s 之间的换行符
- angular - 如何从容器化的 Angular 应用程序中访问我的 docker 主机的 IP
- c# - 无法在 Visual Studio 2015 中加载 CS 项目
- amazon-web-services - 使用 AWS RDS 代理时准备好的语句的替代方案
- kotlin - 如何跨多个异步源将数据收集到具有不可变属性的 kotlin 数据类中?
- mysql - 为什么 MySQL 8 在 Windows 启动时使用 --super-read-only 标志启动服务器?
- c++ - 为什么使用原子 CAS 的程序不能保持线程安全?