Advertisement
Guest User

problem

a guest
Jan 26th, 2017
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React, { Component } from 'react';
  2. import timezones from '../../data/timezones';
  3. import map from 'lodash/map';
  4.  
  5. class SignupForm extends Component{
  6.   constructor(props){
  7.     super(props);
  8.     this.state = {
  9.       username: '',
  10.       email: '',
  11.       password: '',
  12.       passwordConfirmation: '',
  13.       timezone: '',
  14.       errors: {}
  15.     }
  16.  
  17.     this.onSubmit = this.onSubmit.bind(this);
  18.     this.onChange = this.onChange.bind(this);
  19.   }
  20.  
  21.   onChange(e){
  22.     this.setState({[e.target.name]: e.target.value});
  23.   }
  24.  
  25.   onSubmit(e){
  26.     e.preventDefault();
  27.     this.setState({ errors: {} });
  28.     this.props.userSignupRequest(this.state).then(
  29.       () => {},
  30.       ({ data }) => this.setState({errors: data})
  31.     )
  32.   }
  33.  
  34.   render(){
  35.     const { errors } = this.state;
  36.     const options = map(timezones, (val, key) =>
  37.         <option key={val} value={val}>{key}</option>
  38.     );
  39.  
  40.     return (
  41.       <form onSubmit={this.onSubmit}>
  42.         <h1>Registro de usuario</h1>
  43.  
  44.         <div className="form-group">
  45.           <label className="control-label">Nombre de Usuario</label>
  46.           <input
  47.             value={this.state.username}
  48.             onChange={this.onChange}
  49.             type="text"
  50.             name="username"
  51.             className="form-control"
  52.             />
  53.           {errors.username}
  54.         </div>
  55.  
  56.         <div className="form-group">
  57.           <label className="control-label">Correo Electronico</label>
  58.           <input
  59.             value={this.state.email}
  60.             onChange={this.onChange}
  61.             type="email"
  62.             name="email"
  63.             className="form-control"
  64.             />
  65.         </div>
  66.  
  67.         <div className="form-group">
  68.           <label className="control-label">Contraseña</label>
  69.           <input
  70.             value={this.state.password}
  71.             onChange={this.onChange}
  72.             type="password"
  73.             name="password"
  74.             className="form-control"
  75.             />
  76.         </div>
  77.  
  78.         <div className="form-group">
  79.           <label className="control-label">Confirmación Contraseña</label>
  80.           <input
  81.             value={this.state.passwordConfirmation}
  82.             onChange={this.onChange}
  83.             type="password"
  84.             name="passwordConfirmation"
  85.             className="form-control"
  86.             />
  87.         </div>
  88.  
  89.         <div className="form-group">
  90.           <label className="control-label">Zona Horaria</label>
  91.           <select
  92.             className="form-control"
  93.             name="timezone"
  94.             onChange={this.onChange}
  95.             value={this.state.timezone}
  96.           >
  97.             <option value="" disabled>Elije tu Zona Horaria</option>
  98.             {options}
  99.           </select>
  100.         </div>
  101.  
  102.         <div className="form-group">
  103.           <button className="btn btn-primary btn-lg">
  104.             Sign up
  105.           </button>
  106.         </div>
  107.  
  108.       </form>
  109.     );
  110.   }
  111. }
  112.  
  113. SignupForm.propTypes = {
  114.   userSignupRequest: React.PropTypes.func.isRequired
  115. }
  116.  
  117. export default SignupForm;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement