AddressInfo.jsx 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import React, { useState} from 'react'
  2. // import GlobalContext from '../App'
  3. import PropTypes from 'prop-types'
  4. import styles from './register-user.module.scss'
  5. import Input from '../components/Input'
  6. import Button from '../components/Button'
  7. import { isAddressInfo } from './validation'
  8. const AddressInfo = ({ step, setStep, user, setUser }) => {
  9. // const {state, dispatch } = useContext(GlobalContext);
  10. const [errors, setErrors] = useState({})
  11. const handleAddress = ({ target }) => {
  12. setUser({
  13. type: 'UPDATE_ADDRESS_INFO',
  14. payload: {
  15. [target.name]: target.value },
  16. })
  17. }
  18. const handleSubmit = (e) => {
  19. e.preventDefault()
  20. const errors = isAddressInfo(user)
  21. setErrors(errors)
  22. if (Object.keys(errors).length > 0) return
  23. setStep(step + 1)
  24. }
  25. return (
  26. <form onSubmit={handleSubmit} className={styles.RegisterForm}>
  27. <Input
  28. type="text"
  29. label="Country"
  30. name="country"
  31. value={user.addressInfo.country}
  32. onChange={(e) => handleAddress(e)}
  33. error={errors.country}
  34. />
  35. <Input
  36. type="text"
  37. label="City"
  38. name="city"
  39. value={user.addressInfo.city}
  40. onChange={(e) => handleAddress(e)}
  41. error={errors.city}
  42. />
  43. <Input
  44. type="text"
  45. label="Street"
  46. name="street"
  47. value={user.addressInfo.street}
  48. onChange={(e) => handleAddress(e)}
  49. error={errors.street}
  50. />
  51. <Input
  52. type="text"
  53. label="House"
  54. name="house"
  55. value={user.addressInfo.house}
  56. onChange={(e) => handleAddress(e)}
  57. error={errors.house}
  58. />
  59. <div className={styles.submit}>
  60. <Button onClick={() => setStep(step - 1)} type="button">
  61. Back
  62. </Button>
  63. <Button type="submit"> Submit</Button>
  64. </div>
  65. </form>
  66. )
  67. }
  68. AddressInfo.propTypes = {
  69. step: PropTypes.number,
  70. setStep: PropTypes.func,
  71. user: PropTypes.object,
  72. }
  73. export default AddressInfo;