【发布时间】:2021-07-18 19:39:38
【问题描述】:
我想在反应中做一种授权,但是当我在一个组件中添加一个令牌时遇到问题,第二个没有看到它,但只有在重新加载应用程序后才能看到它。 如何在反应中纠正这种情况?
import React from 'react';
import {NavLink} from "react-router-dom";
const Login = () => {
const handleLogin = () => {
console.log( localStorage.getItem('token'));
localStorage.setItem('token', 'token');
}
return (
<div>
<header className="">
<ul>
<li><NavLink to="/main" activeClassName={'active-link'}>Home</NavLink></li>
</ul>
</header>
<button onClick={handleLogin}>login</button>
</div>
);
};
export default Login;
App.js
import './App.css';
import React from 'react';
import {Route,Redirect,Switch} from 'react-router-dom'
import Login from "./pages/login";
import Logout from "./pages/logout";
import Main from "./pages/main";
import ErrorPage from "./pages/error";
function App() {
return (
<div className="App">
<div>ore</div>
<Switch>
<Route exact path="/">
<Redirect to="/login" />
</Route>
{
localStorage.getItem('token') ? <Route path="/main" component={Main} /> : null
}
<Route path="/login" component={Login} />
<Route path="/portfolio" component={Logout} />
<Route path="/error" exact component={ErrorPage} />
<Redirect to={'/error'} />
</Switch>
</div>
);
}
export default App;
【问题讨论】:
-
localStorage.getItem是没有State的,所以重载之前不会生效。使用 Redux 或一些 reducer 临时存储令牌,然后将它们保存到 localStorage。
标签: javascript reactjs local-storage