为什么我没有重定向到我选择的路径?反应路由器

时间:2019-01-07 16:52:36

标签: javascript reactjs react-router router

我有一个小问题,我有一个身份验证系统,我想在登录或注册时导航到该系统。我的页面重定向到主要路径/,但不起作用。

我正在尝试这样做:

render() {
    const { redirect } = this.state.redirect;

    if (redirect) {
      return <Redirect to="/" />;
    } else {
      return (
        <div>
          <RegisterForm
            data={this.state}
            handleChange={this.handleChange}
            handleSubmit={this.handleSubmit}
          />
        </div>
      );
    }
  }

当我向Firebase注册时,我会使用

.then(() => {
          const currentUser = firebase.auth().currentUser;

          currentUser.updateProfile({ displayName: this.state.username });

          alert("Account created!");

          this.setState({ ...this.state, redirect: true });
        })

出什么问题了?

1 个答案:

答案 0 :(得分:3)

在解构状态时似乎打错了字

render() {
    const { redirect } = this.state.redirect;

应该是:

render() {
    const { redirect } = this.state;

虽然可能不是唯一的问题

此外,您可以将render函数简化为以下内容:

  render() {
    const { redirect } = this.state.redirect;

    return redirect ? <Redirect to="/" />
        :
        <div>
          <RegisterForm
            data={this.state}
            handleChange={this.handleChange}
            handleSubmit={this.handleSubmit}
          />
        </div>
  }