reactjs - 将持久上下文反应到本地存储
问题描述
我希望能够将上下文持久保存到本地存储。
我的路由器看起来像
import React, { useState } from 'react';
import { BrowserRouter, Route, Switch } from 'react-router-dom';
import { Login } from './routes/login';
import { ResetPassword } from './routes/reset-password';
import { ResetEmailSent } from './routes/reset-email-sent';
import { App } from './routes/app';
import { GlobalContext, InitialState } from './globalContext';
import { Layout } from './layout';
function Router() {
const [global, setGlobal] = useState(InitialState);
return (
<GlobalContext.Provider value={{ global, setGlobal }}>
<BrowserRouter>
<Route
render={() => (
<Layout>
<Switch>
<Route exact path='/'>
<Login />
</Route>
<Route exact path='/reset-password'>
<ResetPassword />
</Route>
<Route exact path='/reset-email-sent'>
<ResetEmailSent />
</Route>
<Route exact path='*'>
<App />
</Route>
</Switch>
</Layout>
)}
/>
</BrowserRouter>
</GlobalContext.Provider>
);
}
export default Router;
看起来globalConext
像
import { createContext, useContext } from 'react';
interface StateContextType {
global: any;
setGlobal: (State: any) => void;
}
const savedState = localStorage.getItem('state');
const state = savedState ? JSON.parse(savedState) : {};
const InitialState: any = state;
const GlobalContext = createContext<StateContextType>({
global: InitialState,
setGlobal: () => console.warn('no state provider'),
});
const useGlobal = () => useContext(GlobalContext);
export { InitialState, GlobalContext, useGlobal };
我应该在路由器中设置一个 useEffect 以在global
更改时保存到本地存储吗?
解决方案
推荐阅读
- c# - “Mountain”没有实现接口成员“IBiome.height”
- amazon-web-services - 根据 JSON 请求输入抛出特定状态代码 - API Gateway 端点
- python - 在 Python 中为嵌套对象(DynamoDB 和表)使用 Mock
- julia - Julia 中的 UnitRange 类型是什么意思?
- spring - Spring MVC 4 发送错误 400 以响应 AJAX POST
- python - 现在如何通过在聊天中提及来获取用户 ID?
- ios - 调用协议扩展初始化程序
- r - ggplot 使色标范围成为数据范围的子集
- ios - IOS语音识别/控制
- sql - 用于比较数据集的 SQL