@Strax77

Как исправить предупреждение в react-router v4?

Здравствуйте. Не могу разобраться в react-router.

Есть компонент Login, который должен перебрасывать на другую страницу при успешном входе.
Делаю это так(кстати, есть ли способ получше?):

class Login extends Component {
  constructor(props, state) {
    //...
   //какой-то слушатель websocket, в случае положительного ответа сервера в конце делает так:
   this.props.history.push('/main');
  }
}


компонент Login находится в компоненте Routes, что-то вроде:
const Routes = () => {
  return (
    <div>
      // ...
      <Route exact path="/login" component={Login}></Route>
      // ....
    </div>
  )
};


соответственно, он вызывается в корневом компоненте
// class такой-то 
render() {
  return (
   <Router> 
     <Routes/>    
   </Router>
  )
}


react на это дело ругается вот так:
Warning: Can only update a mounted or mounting component. This usually means you called setState, replaceState, or forceUpdate on an unmounted component. This is a no-op.

Please check the code for the Login component.


Как быть?
  • Вопрос задан
  • 237 просмотров
Решения вопроса 1
rockon404
@rockon404 Куратор тега React
Frontend Developer
Ваша проблема решается так:
class Login extends Component {
  componentWillMount() {
    ...
    if(isLoggedIn) {
      this.props.history.push('/main');
    }
  }
  ...
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Lumore
@Lumore
Front-end developer
class Login extends Component {
  componentWillMount() {
    //какой-то слушатель websocket, в случае положительного ответа сервера в конце делает так:
    this.props.history.push('/main');
  }

  render() {
    return <div>Loading...</div>
  }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы