Redirect dosn't work [требует правки]

195
04 апреля 2018, 10:25

Im trying to create my first spa in react. I read that redirect in spa can be done with component. At most cases, it works well, but i faced up with odd thing:

import React, {Component} from 'react';
import {Link, Route} from 'react-router-dom';
import axios from 'axios';
import {Redirect} from 'react-router-dom';
import jwt from 'jsonwebtoken';
export default class Head extends Component{
    constructor(props){
        super(props);
        this.state = {
            user: jwt.decode(localStorage.getItem('jwt')),
            redirect: '',
        }
    }
    componentWillUpdate(nextProps, nextState){
        console.log(nextState.user, jwt.decode(localStorage.getItem('jwt')))
        if( !!nextState.user !== !!jwt.decode(localStorage.getItem('jwt')))this.setState({user:jwt.decode(localStorage.getItem('jwt'))})
    }
    render(){
        console.log(this.state.redirect, 'redirect');
        return(
            <div>
                <h1>head</h1>
                <h3>{this.state.user ? 'Hello ' + this.state.user.userName : null}</h3>
                {this.state.user ?
                    <ul>
                        <li><Link to={'/profile/' + this.state.user.userName}>{this.state.user.userName}</Link></li>
                        <li><button onClick={this.handleLogOut.bind(this)}>Log out</button></li>
                        <li><Link to='/chat'>Enter the chat</Link></li>
                    </ul>
                    :
                    <ul>
                        <li><Link to='/login'>Log in</Link></li>
                    </ul>
                }
                {this.state.redirect ? <Redirect to='/login'/> :console.log( 'hellllooooo')}
            </div>
        )
    }
    handleLogOut(){
        axios({
            method: 'get',
            url: location.origin + '/api/logout',
            headers:{'Authorization': 'Bearer ' + localStorage.getItem('jwt')}}
            ).then((res) => {
                localStorage.removeItem('jwt');
                this.setState({user: null, redirect: '/login'});
            })
    }
}

Sometimes just doesn't work. I mean, it just do nosing. Whan I change to console.log everything works right. Can someone give me a piece of advice?

READ ALSO
Перевести код с Java на JavaScript [требует правки]

Перевести код с Java на JavaScript [требует правки]

Всем привет, название в заголовке:

181
Discord.js overwritePermissions для голосового чата

Discord.js overwritePermissions для голосового чата

я сейчас делаю бота для Discord и я абсолютно нигде не смог найти нормального человеческого объяснения того как работает описание прав для голосового...

244
Запрет 3 пробелов подряд

Запрет 3 пробелов подряд

Плохо знаю регулярные выраженияУ меня есть форма в Angular 5, для полей есть различные способы валидации, один из них Validators

223