【发布时间】:2021-11-15 06:55:09
【问题描述】:
我有一个使用上下文 API 制作的计数器,我需要它在页面更改后保持当前状态。有什么方法可以在页面更改时保持 Counter 值,例如在会话存储或其他内容中?我正在使用反应路由器来更改页面。
export const CounterContext = React.createContext()
function App() {
const [Counter, setCounter] = useState(0)
useEffect(() => {
setCounter(JSON.parse(window.localStorage.getItem('count')));
}, []);
useEffect(() => {
window.localStorage.setItem('count', Counter);
}, [Counter]);
function ChangeCounter() {
setCounter(Counter+1);
}
console.log(Counter);
return (
<CounterContext.Provider value={{Counter, ChangeCounter}}>
<Router>
<div className="App">
<header className="App-header">
<Navbar />
</header>
<div className="Content">
<Switch>
<Route exact path="/">
<Home />
</Route>
<Route path="/Products">
<Products />
</Route>
<Route path="/Contact">
<Contact />
</Route>
</Switch>
</div>
<footer>
<Footer />
</footer>
</div>
</Router>
</CounterContext.Provider>
);
}
编辑:
我使用本地存储完成了它,但我不确定这是否是我想要的。现在即使在浏览器重新启动时,计数器也会保持相同的更新值,但我希望它刷新。现在有没有办法做到这一点?
【问题讨论】:
-
我不熟悉 redux 或 react 的路由器,但是浏览器的
localstorage呢? -
当你访问不同的页面路由时,应该保留状态。它不会的唯一原因是如果
App正在重新安装。您能否展示呈现App的代码,以及用于更改页面的代码?
标签: javascript html reactjs redux state