我try 获取更新的localstorage
状态darkmode
和useContext
,但当我在App.tsx
内的函数中控制台登录它时,它给出了Context.js
内设置的默认值:
App.tsx:
const { darkmode } = useContext(Context);
React.useEffect(() => {
console.log(darkmode);
}, []);
上下文.js:
import { useState, useEffect, createContext } from "react";
const Context = createContext();
function ContextProvider({ children }) {
const [darkmode, setDarkmode] = useState(false);
// Local Storage: setting & getting data
useEffect(() => {
const darkmode = JSON.parse(localStorage.getItem("darkmode"));
if (darkmode) {
setDarkmode(darkmode);
}
}, []);
useEffect(() => {
localStorage.setItem("darkmode", JSON.stringify(darkmode));
}, [darkmode]);
const toggleDarkmode = () => {
setDarkmode((prev) => !prev);
};
return (
<Context.Provider
value={{
darkmode,
toggleDarkmode,
}}
>
{children}
</Context.Provider>
);
}
export { ContextProvider, Context };
本地存储:
控制台记录:
如何使用Reaction上下文获取最新更新的localstorage
状态?