【发布时间】:2020-05-09 10:30:36
【问题描述】:
我想弄清楚如何在 React 中实现 window.addEventListener。我正在用 Gatsby 开发一个网站,并且在“开发”环境中它可以工作,但是每当我开始生产时它就会出错。这是我的代码:
const checkHeader = () => {
// Detect scroll position
let viewportWidth = window.innerWidth || document.documentElement.clientWidth;
if (viewportWidth > 1100) {
let scrollPosition = Math.round(window.scrollY);
if (scrollPosition > 100){
document.querySelector('#nav').classList.add(`${headerStyles.sticky}`);
}
else {
document.querySelector('#nav').classList.remove(`${headerStyles.sticky}`);
}
} else {
}
};
// Run the checkHeader function every time you scroll
window.addEventListener('scroll', checkHeader);
我想在滚动时应用一个类。我已经检查过我不能使用“窗口”。在反应。在 React 中如何实现这段代码?
【问题讨论】:
-
你得到的错误是什么?
-
另外,如果你使用 react.. 当 DOM 重新渲染时,你应用的类可能会突然消失。您应该修改
eventlistener中的状态并根据渲染器中的状态变量设置类。 -
usehooks.com/useOnScreen - 创建一个 Intersection 观察者 React Hook :)
标签: javascript reactjs gatsby