Перенаправление на другой путь означает отключение? - PullRequest
0 голосов
/ 25 апреля 2018

Я новичок, чтобы реагировать и перенаправлять на другой путь, и я запрещаю другому пользователю напрямую входить в /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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...