我正在使用 React-Routerv4 ,当我使用登录表单登录时,我设置了应用程序组件状态值isUser
使用函数从子组件登录变为 truesetUserLogin
,我可以在登录后在控制台中正确调试。我还指定了,如果我迁移到/login
路径,它检查isUser
要迁移到的状态值/home page
如果用户已经登录(isUser
is true
)。但该值现在自动更改为默认值false
,当我进入/login
在浏览器中,它显示登录页面而不是主页。我是 React 新手,所以我在这里遗漏了一些东西吗?
这是代码片段:
import React from 'react';
import ReactDom from 'react-dom';
import 'materialize-css/bin/materialize.css'
import 'materialize-css/bin/materialize.js';
import {BrowserRouter as Router, Route , Redirect} from 'react-router-dom';
import {LoginForm} from './components/login';
import {Home} from './components/home';
import {Main} from './components/main';
import {Room} from './components/room';
import "materialize-css";
import 'materialize-css/js/toasts';
class App extends React.Component {
constructor(props){
super(props);
this.state={
isUser : false
}
this.setUserLogin = this.setUserLogin.bind(this);
}
setUserLogin(){
this.setState({isUser:true});
}
render() {
return <Router>
<div>
<Route exact path="/" component={Home}/>
<Route path="/login" render={(props)=>(
this.state.isUser ? <Redirect to="/home" /> : <LoginForm history={props.history} setUserLogin = {this.setUserLogin}/>
)} />
<Route path="/home" component={Main}/>
<Route path="/room" component={Room}/>
</div>
</Router>
};
}
ReactDom.render(<App/>, document.getElementById('app'));
如果我了解您的情况,当您在浏览器中手动更改 URL 时,您是否希望您的状态持续存在?如果你想要这个,你必须在持久存储(如 localStorage)中存储一些变量,并在组件生命周期的某个时刻检查它:构造函数、componentDidMount...
当您手动更改浏览器位置时,一切都会重新启动,包括状态,整个页面都会重新下载(或从缓存中读取)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)