Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.03 KB | None | 0 0
  1. import React, { Component, useState } from 'react'
  2. import Navbar from '../Layout/Navbar'
  3.  
  4. import SuccessRegisterMessage from '../FlashMessages/SuccessRegister'
  5. import FailedRegisterMessage from '../FlashMessages/SignUpFailed'
  6.  
  7. export default class SignUp extends Component {
  8. constructor(props) {
  9. super(props);
  10. this.state = {
  11. form: {
  12. username: '',
  13. password: '',
  14. email: ''
  15. },
  16. errors: []
  17. }
  18.  
  19. this.handleChange = this.handleChange.bind(this)
  20. this.handleSubmit = this.handleSubmit.bind(this)
  21. }
  22.  
  23.  
  24. handleChange = e => {
  25. const {
  26. name,
  27. value
  28. } = e.currentTarget;
  29. this.setState({
  30. form: {
  31. ...this.state.form,
  32. [name]: value
  33. }
  34. })
  35. console.log({
  36. form: {
  37. ...this.state.form,
  38. [name]: value
  39. }
  40. })
  41. };
  42.  
  43.  
  44. isValidForm(formDatas) {
  45. let errorsForm = [...this.state.errors]
  46.  
  47. if (formDatas.username.length < 5) {
  48. this.setState({
  49. errors: [...this.state.errors, {
  50. field: "username",
  51. message: "Username trop court"
  52. }]
  53. })
  54. }
  55. if (!formDatas.email.match(/^[^\s@]+@[^\s@]+\.[^\s@]+$/)) {
  56. this.setState({
  57. errors: [...this.state.errors, {
  58. field: "email",
  59. message: "Email invalide"
  60. }]
  61. })
  62. }
  63. if (formDatas.password.length < 7) {
  64. this.setState({
  65. errors: [...this.state.errors, {
  66. field: "password",
  67. message: "Password trop court"
  68. }]
  69. })
  70. }
  71. console.log(this.state.errors)
  72. return this.state.errors;
  73. }
  74.  
  75.  
  76. handleSubmit(e) {
  77. e.preventDefault();
  78.  
  79. this.isValidForm(this.state.form)
  80. }
  81.  
  82.  
  83. render() {
  84. return(
  85. <div>
  86. <Navbar />
  87. <div className="flex flex-row justify-center mt-32 form-signup-dig">
  88. <div className="w-full max-w-xs">
  89. <form onSubmit={this.handleSubmit} method="POST">
  90. <label className="block text-grey-darker text-sm font-bold mb-2">
  91. Nom d'utilisateur
  92. <input
  93. type="text"
  94. value={this.state.form.username}
  95. onChange={this.handleChange}
  96. className="shadow appearance-none border rounded w-full h-12 py-2 px-3 text-grey-darker leading-tight focus:outline-none focus:shadow-outline"
  97. name="username"
  98. placeholder="Ex: Nikos"
  99. required
  100. />
  101. </label>
  102. <label className="block text-grey-darker text-sm font-bold mb-2">
  103. Email
  104. <input
  105. type="text"
  106. value={this.state.form.email}
  107. onChange={this.handleChange}
  108. className="shadow appearance-none border rounded w-full h-12 py-2 px-3 text-grey-darker leading-tight focus:outline-none focus:shadow-outline"
  109. name="email"
  110. placeholder="azerty@hotmail.fr"
  111. required
  112. />
  113. </label>
  114. <div className="mb-6">
  115. <label className="block text-grey-darker text-sm font-bold mb-2" htmlFor="password">
  116. Mot de passe
  117. </label>
  118. <input
  119. type="password"
  120. value={this.state.form.password}
  121. onChange={this.handleChange}
  122. className="shadow appearance-none border border rounded w-full h-12 py-2 px-3 text-grey-darker mb-3 leading-tight focus:outline-none focus:shadow-outline"
  123. id="password"
  124. name="password"
  125. placeholder="******************"
  126. required
  127. />
  128. </div>
  129. <div className="flex items-center justify-between">
  130. <button
  131. className="bg-blue-600 hover:bg-blue-dark text-white font-bold w-full h-12 py-2 px-4 rounded focus:outline-none focus:shadow-outline"
  132. type="submit"
  133. >
  134. Se connecter
  135. </button>
  136. </div>
  137. </form>
  138. </div>
  139. </div>
  140. </div>
  141. )
  142. }
  143.  
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement