Реактивные жизненные циклы компонентов все еще работают после перенаправления - PullRequest
0 голосов
/ 18 октября 2018

В моем компоненте я хочу проверить, зарегистрирован ли пользователь, а если нет, то перенаправить на страницу входа.В настоящее время я выполняю проверку и перенаправление в componentWillMount.

  public componentWillMount() {
    if(this.props.master === null) {
      this.props.history.push('./login');
    }
  }

Однако, несмотря на то, что перенаправление действительно происходит, оба метода render () и componentDidMount () все еще выполняются, что приводит к сбою моего кода, потому что там я предполагаю, что master ненуль.

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Рассмотрите возможность использования механизма, подобного этому:

Когда пользователь не вошел в систему, перенаправьте на страницу входа.Reactjs

Чтобы перенаправить пользователя на страницу входа на маршрутизаторе вместо компонента с ограниченным доступом.

И, пожалуйста, будьте осторожны с componentWillMount, поскольку в будущих версиях он будет устаревшим,https://reactjs.org/docs/react-component.html#unsafe_componentwillmount

0 голосов
/ 18 октября 2018

Попробуйте:

Если shouldComponentUpdate() вернет false, то componentWillUpdate(), render() и componentDidUpdate() не будут вызваны

shouldComponentUpdate() {
  if (this.props.master == null) return false
}

Исходный ответ от: Остановить рендеринг компонента после componentDidMount ()

...