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

Why am I not being redirect to my selected path? React 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 });
        })

哪里出了问题?

你在解构你的状态时好像打错了:

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>
  }