Advertisement
Guest User

Untitled

a guest
Mar 2nd, 2018
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. class Page extends React.Component {
  2.     constructor(props) {
  3.         super(props);
  4.         this.state = {
  5.             username: this.props.username,
  6.             password: ''
  7.         };
  8.     }
  9.  
  10.     handleSubmit(e) {
  11.         this.setState({
  12.             username: e.target.username.value,
  13.             password: e.target.password.value
  14.         });
  15.     }
  16.  
  17.     handleLogout() {
  18.         this.setState({username: ''});
  19.     }
  20.  
  21.     render() {
  22.         const username = this.state.username;
  23.         return (
  24.             <div>
  25.                 <Header username={username} onLogout={() => this.handleLogout()}/>
  26.                 {!username && <LoginForm onSubmit={e => this.handleSubmit(e)}/>}
  27.             </div>
  28.         );
  29.     }
  30. }
  31.  
  32. class Header extends React.Component {
  33.     render() {
  34.         const username = this.props.username;
  35.         return (
  36.             <div className="Header">
  37.                 {username ? (
  38.                     <div>
  39.                         <button>{username}</button>
  40.                         <button onClick={this.props.onLogout}>Logout</button>
  41.                     </div>
  42.                 ) : (
  43.                     <div>
  44.                         <button>Login</button>
  45.                         <button>Register</button>
  46.                     </div>
  47.                 )}
  48.             </div>
  49.         );
  50.     }
  51. }
  52.  
  53. class LoginForm extends React.Component {
  54.     handleSubmit(e) {
  55.         this.props.onSubmit(e);
  56.         e.preventDefault();
  57.     }
  58.  
  59.     render() {
  60.         return (
  61.             <form onSubmit={e => this.handleSubmit(e)} className="LoginForm">
  62.                 <label>
  63.                     Username:
  64.                     <input type="text" name="username"/>
  65.                 </label>
  66.                 <label>
  67.                     Password:
  68.                     <input type="password" name="password"/>
  69.                 </label>
  70.                 <input type="submit" value="Submit"/>
  71.             </form>
  72.         );
  73.     }
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement