首页 > 解决方案 > 尝试声明主体类时可以使用“=”吗?

问题描述

所以我使用 State 使用类来改变我身体的背景颜色。基本上有一个滚动效果,它从“暗模式”开始,在击中特定参考后变成“亮模式”。这是我的代码片段:

const shiftRef = useRef(null)
const [ changeMode, setChangeMode ] = useState("dark-mode");
    const handleChangeMode = () => {
        if (shiftRef.current) {
            let main = shiftRef.current.getBoundingClientRect();
            if (main.top <= 160) {
                setChangeMode("light-mode")
            } else {
                setChangeMode("dark-mode")
            }
            console.log(main.top)
        }
    }
    useEffect(() => {
        document.body.classList = changeMode;
        window.addEventListener("scroll", handleChangeMode);
        return () => window.removeEventListener("scroll", handleChangeMode);
    }, [changeMode]);

现在我让它更改正文而不是组件容器,以便颜色始终存在于背景中 - 如果我不这样做,如果我滚动超出页面的参数,颜色会“剪辑”,这不会给出我需要的效果。

这是我的问题...在 Effect 挂钩中声明我的 body 类是否有效document.body.classList = {add class here}?我问的唯一原因通常是有一个额外的动作,比如.addor .removeor .containsor ,但我在这里不这样做。另外:我应该指出所有编译成功的东西,并且我的控制台中没有警告/警报......所以我想没关系?但我想我会问这里的人,因为你们都提供了很多很棒的信息。

谢谢!

标签: javascriptreactjsuse-state

解决方案


推荐阅读