简体   繁体   English

使用 React 成功登录后如何呈现新组件

[英]How to render a new component after successfull login using React

I've made a very simple Login component for learning purpose.为了学习目的,我制作了一个非常简单的Login组件。 If the user enters the correct username and password he should see the Homepage .如果用户输入正确的用户名和密码,他应该会看到Homepage Login mechanism is working fine.登录机制运行良好。 I'm not able to redirect to Homepage after successful login.成功登录后,我无法重定向到主页。

users.json用户.json

[
  {
    "ID": 1,
    "Username": "mike",
    "Password": "User1Password"
  },
  {
    "ID": 2,
    "Username": "robert",
    "Password": "User2Password"
  }
]

Login.js登录.js

import React, { Component } from 'react';
...
import UserProfiles from './users.json';
import Home from '../Home/Home';

class Login extends Component {
  constructor(props) {
    super(props);
    this.state = {
      username: '',
      password: '',
      loginStatus: 'not logged in',
    };
  }

  ...

  handleSubmit = (event) => {
    var found = false;
    event.preventDefault();
    UserProfiles.forEach((user) => {
      if (user.Username == this.state.username) {
        found = true;
      }
    });
    if (found) {
      this.setState({
        loginStatus: 'Successfully logged in!',
      });
    } else {
      this.setState({
        loginStatus: 'Login failed!',
      });
    }
  };

  render() {
    return (
      <div className="login-form">
        <Form onSubmit={this.handleSubmit}>
          <FormGroup>
            //USERNAME AND PASSWORD FIELDS
          </FormGroup>
          <Button type="submit">Submit</Button>
        </Form>
      </div>
    );
  }
}

export default Login;

Home.js is very simple as of now: Home.js目前非常简单:

import React, { Component } from 'react';

class Home extends Component {
  constructor(props) {
    super(props);
  }

  render() {
    return (
      <div>
        <h1>Hello world! Welcome to homepage</h1>
      </div>
    );
  }
}

export default Home;

I'm new to React.我是 React 的新手。 Please pitch in. Here is the stackblitz .请参与。这是stackblitz

你需要了解 React Router。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM