我想将当前主题存储在本地存储中.我正在使用useEffect挂钩,它应该存储当前主题,但由于某种原因,它存储了"light"代表黑暗主题,存储"dark"代表Illuminate 主题.
import { useEffect, useState } from "react";
import "./styles.css";
const ThemeSwitch = () => {
const [theme, setTheme] = useState("light");
function changeTheme() {
setTheme(theme === "light" ? "dark" : "light");
}
useEffect(() => {
localStorage.setItem("Theme", theme);
}, [theme]);
return (
<div className={theme === "light" ? "dark" : "light"} id="container">
<h1>Hello World!</h1>
<button
className={theme === "light" ? "light" : "dark"}
onClick={changeTheme}
>
Change Theme
</button>
</div>
);
};
export default ThemeSwitch;
我预计单击该按钮后,将调用函数changeTheme
,更新主题状态并触发组件的重新渲染.在重新渲染期间,根据我所知,本地存储中的值将被更新.那么为什么它存储相反的值("light"代表黑暗主题,"dark"代表Illuminate 主题)?询问您的解释.