Advertisement
Guest User

Untitled

a guest
Jul 11th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.85 KB | None | 0 0
  1. import React, { Component } from 'react';
  2. import './App.css';
  3.  
  4. class LoginPage extends Component {
  5. constructor() {
  6. super();
  7. this.state = {
  8. username: '',
  9. password: '',
  10. error: '',
  11. };
  12.  
  13. this.handlePassChange = this.handlePassChange.bind(this);
  14. this.handleUserChange = this.handleUserChange.bind(this);
  15. this.handleSubmit = this.handleSubmit.bind(this);
  16. this.dismissError = this.dismissError.bind(this);
  17. }
  18.  
  19. dismissError() {
  20. this.setState({ error: '' });
  21. }
  22.  
  23. handleSubmit(evt) {
  24. evt.preventDefault();
  25.  
  26. if (!this.state.username) {
  27. return this.setState({ error: 'Username is required' });
  28. }
  29.  
  30. if (!this.state.password) {
  31. return this.setState({ error: 'Password is required' });
  32. }
  33.  
  34. return this.setState({ error: '' });
  35. }
  36.  
  37. handleUserChange(evt) {
  38. this.setState({
  39. username: evt.target.value,
  40. });
  41. };
  42.  
  43. handlePassChange(evt) {
  44. this.setState({
  45. password: evt.target.value,
  46. });
  47. }
  48.  
  49. render() {
  50. // NOTE: I use data-attributes for easier E2E testing
  51. // but you don't need to target those (any css-selector will work)
  52.  
  53. return (
  54. <div className="Login">
  55. <form onSubmit={this.handleSubmit}>
  56. {
  57. this.state.error &&
  58. <h3 data-test="error" onClick={this.dismissError}>
  59. <button onClick={this.dismissError}>✖</button>
  60. {this.state.error}
  61. </h3>
  62. }
  63. <label>User Name</label>
  64. <input type="text" data-test="username" value={this.state.username} onChange={this.handleUserChange} />
  65.  
  66. <label>Password</label>
  67. <input type="password" data-test="password" value={this.state.password} onChange={this.handlePassChange} />
  68.  
  69. <input type="submit" value="Log In" data-test="submit" />
  70. </form>
  71. </div>
  72. );
  73. }
  74. }
  75.  
  76. export default LoginPage;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement