<script src="https://unpkg.com/react@17.0.2/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@17.0.2/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/@babel/standalone@7.14.7/babel.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"
integrity="sha512-z3gLpd7yknf1YoNbCzqRKc4qyor8gaKU1qmn+CShxbuBusANI9QpRohGBreCFkKxLhei6S9CQXFEbbKuqLg0DA=="
crossorigin="anonymous" referrerpolicy="no-referrer" />
<div id="app" style="height:10000px"></div>
<script type="text/babel">
const { useState, useEffect } = React;
const [visible, setVisible] = useState(false);
const toggleVisible = () => {
const scrolled = document.documentElement.scrollTop;
} else if (scrolled <= 300) {
const scrollToTop = () => {
window.addEventListener('scroll', toggleVisible);
window.removeEventListener('scroll', toggleVisible);
<h3>React Js Scroll to Top of Page</h3>
className="scroll-to-top-button"
style={{ display: visible ? 'inline' : 'none' }}
<i class="fa-solid fa-circle-up"></i>
ReactDOM.render(<App />, document.getElementById("app"));
.scroll-to-top-button:hover {