Javascript 登录后响应路由器重定向无法正常工作
我正在开发一个基本的react应用程序,包括react路由器。 我有一个带有本地存储的简单身份验证控件 在用户输入用户名和密码并单击登录后,我执行HTTP调用并使用Axios从服务器获取响应。然后我设置localStorage“user”项 为了保护路由,我实现了PrivateRoute组件,在其中检查localStorage中是否设置了“user” 我已经尝试在Axios HTTP调用中移动set Local Storage in then(),但没有任何更改 Api调用Javascript 登录后响应路由器重定向无法正常工作,javascript,reactjs,react-router,axios,Javascript,Reactjs,React Router,Axios,我正在开发一个基本的react应用程序,包括react路由器。 我有一个带有本地存储的简单身份验证控件 在用户输入用户名和密码并单击登录后,我执行HTTP调用并使用Axios从服务器获取响应。然后我设置localStorage“user”项 为了保护路由,我实现了PrivateRoute组件,在其中检查localStorage中是否设置了“user” 我已经尝试在Axios HTTP调用中移动set Local Storage in then(),但没有任何更改 Api调用 loginUse
loginUser (username,password) {
return HTTP.post('/login', null, { params: {
username,
password
}})
Api.loginUser(username,password)
.then( (response) => {
console.log("Response DATA");
Api.saveUserData(response.data);
this.setState({ redirect: true });
})
渲染方法
if (this.state.redirect === true) {
return <Redirect to='/home'/>;
}
if(this.state.redirect==true){
返回;
}
应用程序组件
class App extends Component {
render() {
return (
<Router>
<Route path="/login" component={Login} />
<PrivateRoute path="/home" component={Home} />
</Router>
);
}
}
const PrivateRoute = ({ component: Component, ...rest }) => {
const isLoggedIn = AuthService.isAuthenticated();
return (
<Route
{...rest}
render={props =>
isLoggedIn ? (
<Component {...props} />
) : (
<Redirect to={{ pathname: '/login', state: { from: props.location } }} />
)
}
/>
)
}
类应用程序扩展组件{
render(){
返回(
);
}
}
专用路由组件
class App extends Component {
render() {
return (
<Router>
<Route path="/login" component={Login} />
<PrivateRoute path="/home" component={Home} />
</Router>
);
}
}
const PrivateRoute = ({ component: Component, ...rest }) => {
const isLoggedIn = AuthService.isAuthenticated();
return (
<Route
{...rest}
render={props =>
isLoggedIn ? (
<Component {...props} />
) : (
<Redirect to={{ pathname: '/login', state: { from: props.location } }} />
)
}
/>
)
}
const PrivateRoute=({component:component,…rest})=>{
const isLoggedIn=AuthService.isAuthenticated();
返回(
伊斯洛格丁(
) : (
)
}
/>
)
}
问题似乎是:本地存储是在重定向之后设置的,因为它是空的。所以我得到的是空白页面,而不是加载主组件。如果我刷新页面,代码工作正常。如何访问localstorage?localstorage.getItem()