Advertisement
Guest User

Untitled

a guest
Apr 8th, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. import React, { Component } from "react";
  2. import Input from "./common/Input";
  3.  
  4. export default class LoginForm extends Component {
  5. state = {
  6. username: "",
  7. password: "",
  8. errors: {}
  9. };
  10.  
  11. validate = () => {
  12. const errors = {};
  13. if (this.state.username.trim() === "") {
  14. errors.username = "Username is required";
  15. }
  16.  
  17. if (this.state.password.trim() === "") {
  18. errors.password = "Password is required";
  19. }
  20. return Object.keys(errors).length === 0 ? null : errors;
  21. };
  22.  
  23. handleSubmit = e => {
  24. e.preventDefault();
  25. const errors = this.validate();
  26. console.log(errors);
  27. this.setState({ errors: errors || {} });
  28. if (errors) return;
  29. };
  30.  
  31. validateProperty = (input, e) => {
  32. const { value } = e.target;
  33. if (input === "username") {
  34. if (value.trim() === "") return "Username is required";
  35. }
  36. if (input === "password") {
  37. if (value.trim() === "") return "Password is required";
  38. }
  39. };
  40.  
  41. handleChange = input => e => {
  42. console.log(e.target.value, input);
  43. const errors = { ...this.state.errors };
  44. const errorMessage = this.validateProperty(input, e);
  45. if (errorMessage) errors[input] = errorMessage;
  46. else delete errors[input];
  47. this.setState({
  48. [input]: e.target.value,
  49. errors: errors
  50. });
  51. };
  52.  
  53. /* handleChange = e => {
  54. const { name, value } = e.target;
  55. this.setState({
  56. [name]: value
  57. });
  58. }; */
  59.  
  60. render() {
  61. const { username, password, errors } = this.state;
  62. return (
  63. <div>
  64. <h1>Login</h1>
  65. <form onSubmit={this.handleSubmit}>
  66. <Input
  67. name="username"
  68. value={username}
  69. label="Username"
  70. onChange={this.handleChange}
  71. type={"text"}
  72. error={errors.username}
  73. />
  74. <Input
  75. name="password"
  76. value={password}
  77. label="Password"
  78. onChange={this.handleChange}
  79. type={"password"}
  80. error={errors.password}
  81. />
  82. <button className="btn btn-primary">Login</button>
  83. </form>
  84. </div>
  85. );
  86. }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement