所以我写了一个React代码,当我向下滚动一个 neon 线从页面的顶部到页面的底部,问题是当我在next.js上尝试它时,它不起作用,错误是next.js行为空,有什么线索吗?
代码如下:
import React, { useState, useEffect } from "react";
import styles from "./Neon.module.css";
const Neon = () => {
const [scrolling, setScrolling] = useState(false);
useEffect(() => {
const handleScroll = () => {
setScrolling(true);
const neonLine = document.querySelector(".nLine");
const scrollTop = window.scrollY;
const windowHeight = window.innerHeight;
const documentHeight = document.documentElement.scrollHeight;
const scrollPercentage = (scrollTop / (documentHeight - windowHeight)) * 100;
neonLine.style.height = scrollPercentage + "%";
};
let scrollingTimeout;
const checkScrollStop = () => {
if (scrolling) {
setScrolling(false);
clearTimeout(scrollingTimeout);
} else {
const neonLine = document.querySelector(".nLine");
neonLine.style.transition = "height 0.5s ease-in-out";
}
};
window.addEventListener("scroll", handleScroll);
window.addEventListener("scroll", checkScrollStop);
return () => {
window.removeEventListener("scroll", handleScroll);
window.removeEventListener("scroll", checkScrollStop);
};
}, []);
return (
<div className={styles.con}>
<div className={styles.neon}></div>
<div className={styles.line}>
<div className={styles["nLine"]}></div>
</div>
</div>
);
};
export default Neon;
字符串
1条答案
按热度按时间atmip9wb1#
您有:
字符串
和
型
假设
styles["nLine"]
的值为"nLine"
。这是一个错误的假设。类名是随机的,这样你就可以在不同的组件中使用相同的名称,而不会发生冲突,也不会应用彼此的样式。
一般来说,你应该避免直接访问DOM。当你需要访问DOM时,使用a reference而不是搜索整个DOM。
型