Я новичок, чтобы реагировать и перенаправлять на другой путь, и я запрещаю другому пользователю напрямую входить в /main
путь.Я проверяю, if yes ..
он будет перенаправлять ...
Так что, когда я перенаправляю, он перенаправляет на страницу /login
, и это перенаправляет дважды.
Теперь, когда я достиг при входе в системуи заполнил мои учетные данные и получил токен, теперь поле, которое я установил, т.е. authenticate, является yes
, потому что componentWillUnmount()
не вызвал.
Таким образом, это означает, что компоненты не были смонтированы.И так как все учетные данные указаны правильно, как я сказал в поле (аутентификация - «да»), поток не будет перенаправлен на /main..
, он будет перенаправлен на ту же страницу /login
и выдаст ошибку.
class Main extends Component {
constructor() {
super();
this.state = { userInfo: '', onlineUser: '', authenticate: 'no' };
}
async getUsers() {
let user = await apiGateway.getUserInfo();
alert(' did Mount1');
alert(user);
if(user == null) {
this.setState({ authenticate : 'yes' });
return;
}
else {
this.setState({ userInfo : user.data });
}
}
async setUpOnlineUsers() {
let online = await apiGateway.getOnlineUsers();
alert('did Mount2');
if (online == null) {
this.setState({ authenticate: 'yes' });
return;
}
else {
this.setState({ onlineUser: online.data });
}
}
async componentDidMount() {
this.getUsers();
this.setUpOnlineUsers();
}
async componentWillUnmount() {
alert('unmount');
}
render() {
const { authenticate } = this.state;
alert(authenticate + ' render');
if (authenticate === 'yes') {
console.log('Redirect');
return <Redirect to='/login' /> ;
}
const { userInfo } = this.state;
const { onlineUser } = this.state;
console.log(onlineUser);
return (
<div className='Main'>
<div className='Main-header'>
<Header userInfo = {userInfo}/>
</div>
<div className='Main-chat'>
<Chat onlineUser = {onlineUser}/>
</div>
<div className="Main-container">
<Image imageArray = {imageArray}/>
</div>
</div>
);
}
}
export default Main;
** index.js **
class App extends Component{
render(){
return(
<Router>
<div>
<Route path ='/login' component={Login}/>
<Route path = '/register' component={Register}/>
<Route path = '/' component={Main}/>
</div>
</Router>
);
}
}
export default App;