Hasta este punto solo hemos estado en comunicación con nuestra API por medio de GET, en esta sección vamos a utilizar el metodo POST para crear nuevos usuarios.
Componente de Registro
Lo primero que vamos hacer es crear un nuevo componente llamado Register.jsx en nuestra carpeta components
Luego de esto, vamos actualizar la pagina de registro para usar este componente que acabamos de crear y remover todo el html del formulario que allí tenemos.
src/pages/Register.jsx
import React from'react';import { Link } from'react-router-dom';// Agregamos el componente que acabamos de crearimport FormRegister from'../components/Register';constRegister= () => ( <divclassName="container"> <divclassName="card o-hidden border-0 shadow-lg my-5"> <divclassName="card-body p-0"> <divclassName="row"> <divclassName="col-lg-5 d-none d-lg-block bg-register-image" /> <divclassName="col-lg-7"> <divclassName="p-5"> <divclassName="text-center"> <h1className="h4 text-gray-900 mb-4">Create an Account!</h1> </div> {/* Remplazamos todo el html del formulario por el componente */} <FormRegister /> <hr /> <divclassName="text-center"> <LinkclassName="small"to="/login">Already have an account? Login!</Link> </div> </div> </div> </div> </div> </div> </div>);exportdefault Register;
Continuaremos ahora con la función que se encargará de actualizar nuestro estado interno, cada que el input tenga un cambio.
src/components/Register.jsx
import React, { useState } from'react';constRegister= ({ handleSumbit }) => {const [form,setForm] =useState({});// Funcion para actualizar cada uno de los input consthandleInputChange= (evt) => {const { target: { name,value } } = evt;setForm({ [name]: value,...form }); }return ( <formclassName="user"onSubmit={sendForm}> <divclassName="form-group row"> <divclassName="col-sm-6 mb-3 mb-sm-0"> {/* Vamos agregar la funcion handleInputChange con callback del onChange */} <inputtype="text"className="form-control form-control-user"id="firstName"placeholder="First Name"name="name"onChange={handleInputChange}required /> </div> <divclassName="col-sm-6"> {/* Vamos agregar la funcion handleInputChange con callback del onChange */} <inputtype="text"className="form-control form-control-user"id="lastName"placeholder="Last Name"name="lastName"onChange={handleInputChange}required /> </div> </div> <divclassName="form-group"> {/* Vamos agregar la funcion handleInputChange con callback del onChange */} <inputtype="email"className="form-control form-control-user"id="email"placeholder="Email Address"name="email"onChange={handleInputChange}required /> </div> <divclassName="form-group row"> <divclassName="col-sm-6 mb-3 mb-sm-0"> {/* Vamos agregar la funcion handleInputChange con callback del onChange */} <inputtype="password"className="form-control form-control-user"id="password"placeholder="Password"name="password"onChange={handleInputChange}required /> </div> <divclassName="col-sm-6"> {/* Vamos agregar la funcion handleInputChange con callback del onChange */} <inputtype="password"className="form-control form-control-user"id="confirmPassword"placeholder="Repeat Password"name="confirmPassword"onChange={handleInputChange}required /> </div> </div> <buttontype="submit"className="btn btn-primary btn-user btn-block"> Register Account </button> </form> );}exportdefault Register;
Ahora solo nos falta tener la función que se ejecutara cuando le demos clic en el boton tipo submit, vamos a crear la siguiente función, justo debajo handleInputChange.
src/components/Register.jsx
constsendForm= (evt) => {evt.preventDefault();// Vamos a ejecutar un callback que nos llegará como prop.console.log(form);}
Finalmente todo el componente Register.jsx debe verse de la siguiente forma:
En este punto si vamos a nuestro navegador y registrar un usuario por medio de la url http://localhost:3000/register deberas ver por medio de las developer tools de tu navegador el token del usuario almacenado en el localstorage.
Código de referencia: En este enlace puedes ver el commit correspondiente a este punto Github.
Retos
Actualizar el codigo de la pagina de registro para redireccionar al usuario a la pagina principal luego de ser registrado en el sistema.
Crear la funcionalidad para hacer login en el sistema.