Как получить доступ к реквизитам истории в componentWillMount? - PullRequest
0 голосов
/ 28 декабря 2018

На моей домашней странице есть компонент, в котором хранятся кнопки регистрации и входа.

Homepage.js

state = {
    triggerSignInComponent: false
}

render() {
   return {
    this.state.triggerButtons ? 
      <div>
        <Link to='/register'>
          <button>Register</button>
        <Link/>

        <button onClick={this.toggleSignInHandler}>Sign In</button>
      </div> : null
   }
}
  • Если пользователь нажимает кнопку «Вход», компонент вызывает компонент «Вход».
  • Если пользователь нажимает на кнопку «Регистрация», он будет перенаправлен на компонент «Регистрация».Однако, если они передумают, есть кнопка «Вход», которая перенаправляет пользователя на домашнюю страницу с переключенным компонентом «Вход».

Register.js

signInHandler = () => {
    this.props.history.push({
        pathname:'/',
        state: {
            triggerSignInComponent: true
        }
    });
}

<button onClick={this.onSubmitHandler}>Register</button> 

<button onClick={this.signInHandler}>Sign In</button>

Я хочу, чтобы компонент входа отображался, как только пользователь переключает signInHandler.Как я могу изменить состояние моей домашней страницы, если пользователь перенаправлен на домашнюю страницу для входа?Я попробовал следующее в Homepage.js :

componentWillMount = () => {
    if(this.props.location.state.triggerSignInComponent) {
        this.setState({
            triggerSignInComponent: true
        })
    }
}

Однако, это не работает, так как реквизит не определен при первом вызове компонента.

1 Ответ

0 голосов
/ 28 декабря 2018

попробуйте изменить this.props.location.state.triggerSignInComponent на this.props.location.triggerSignInComponent

componentWillMount = () => {
    if(this.props.location.triggerSignInComponent) {
        this.setState({
            triggerSignInComponent: true
        })
    }
}
...