Guest User

Untitled

a guest
Mar 22nd, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.20 KB | None | 0 0
  1. import React from 'react';
  2. import { connect } from '@cerebral/react';
  3. import { state, signal } from 'cerebral/tags';
  4. import s from './Login.module.scss';
  5.  
  6. class Login extends React.Component {
  7.  
  8. constructor(props) {
  9. super(props);
  10.  
  11. this.state = {
  12. email: '',
  13. password: '',
  14. };
  15.  
  16. this.handleSubmit = this.handleSubmit.bind(this);
  17. this.handleLogout = this.handleLogout.bind(this);
  18. }
  19.  
  20. updateField(fieldName, value) {
  21. this.setState({
  22. [fieldName]: value,
  23. });
  24. }
  25.  
  26. handleSubmit(event) {
  27. event.preventDefault();
  28.  
  29. this.props.login({
  30. email: this.state.email,
  31. password: this.state.password,
  32. });
  33. }
  34.  
  35. handleLogout(event) {
  36. event.preventDefault();
  37. this.props.logout();
  38. }
  39.  
  40. render() {
  41. const { loginStatus, isLoggedIn } = this.props;
  42.  
  43. return (
  44. <form className={s.form}>
  45. <div className={s.inputGroup}>
  46. <label htmlFor="email">E-Mail:</label>
  47. <input type="text" id="email" value={this.state.email} onChange={(e) => this.updateField('email', e.target.value)} />
  48. </div>
  49.  
  50. <div className={s.inputGroup}>
  51. <label htmlFor="email">Password:</label>
  52. <input type="password" id="password" value={this.state.password} onChange={(e) => this.updateField('password', e.target.value)} />
  53. </div>
  54.  
  55. {loginStatus === 'error'
  56. ? (
  57. <div className={s.error} id="error">
  58. There was an Error!
  59. </div>
  60. )
  61. : null
  62. }
  63.  
  64. {isLoggedIn
  65. ? <button onClick={this.handleLogout} id="logout">Logout</button>
  66. : <button onClick={this.handleSubmit} id="login">Login</button>
  67. }
  68.  
  69. </form>
  70. );
  71. }
  72. }
  73.  
  74. export default connect(
  75. {
  76. login: signal`app.login`,
  77. logout: signal`app.logout`,
  78. loginStatus: state`app.loginStatus`,
  79. isLoggedIn: state`app.isLoggedIn`,
  80. },
  81. Login
  82. );
Add Comment
Please, Sign In to add comment