gpt4 book ai didi

javascript - 如何在滚动时替换项目?

转载 作者:行者123 更新时间:2023-12-01 00:32:42 26 4
gpt4 key购买 nike

滚动页面时我需要更改导航栏。如何捕获改变的时机?根据React的概念,如何正确地做到这一点?据我所知,使用 getElementById 是不是很糟糕?

const useState = React.useState
const useEffect = React.useEffect

const Component = () => {
const [topNavbarHide, setTopNavbarHide] = useState(true);

useEffect(() => {
window.addEventListener('scroll', function () {
let navbarSize = document.getElementById('navbar').offsetHeight;
console.log("navbarSize " + navbarSize + "px");
let scrollTop = document.documentElement.scrollTop;
console.log("scrollTop " + scrollTop);
if (scrollTop > navbarSize) {
setTopNavbarHide(false)
} else {
setTopNavbarHide(true)
}
console.log(topNavbarHide);
});
});


return (
<div>
<div id={"navbar"} className="navbar">
<div
className={(topNavbarHide) ? "topNavbar" : "topNavbar hide"}>topNavbar
</div>
<div className="bottomNavbar">bottomNavbar</div>
</div>
<div className="box"></div>
<div className="box1"></div>
<div className="box2"></div>
<div className="box"></div>
<div className="box1"></div>
</div>
)

};


ReactDOM.render(
<Component/>,
document.getElementById('root')
);

https://codepen.io/slava4ka/pen/wvvGoBX

最佳答案

按照您当前正在执行的方式将事件监听器添加到 React hook 是完全可以的。您这样做的方式是正确的方式。

关于javascript - 如何在滚动时替换项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58381072/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com