¡Crear una página de perfil en React no solo es esencial sino también súper divertido! Permite a sus usuarios ver y administrar su información personal con estilo. En este tutorial, crearemos una página de perfil elegante utilizando algunos paquetes npm interesantes, incluido Avatarium para imágenes de perfil increíbles, React Router para una navegación fluida, Axios para obtener datos y Formik para manejar entradas de formularios. ¡Sumergámonos y hagamos algo increíble!
Antes de comenzar, asegúrese de tener lo siguiente:
create-react-app
Primero, crea un nuevo proyecto de React si aún no lo has hecho:
npx create-react-app profile-page cd profile-page
Necesitaremos varios paquetes npm para este tutorial:
Instale estos paquetes ejecutando:
npm install @sabfry/avatarium react-router-dom axios formik
Usaremos React Router para navegar entre diferentes páginas de nuestra aplicación. Primero, configure el enrutador en App.js
:
import React from 'react'; import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'; import ProfilePage from './ProfilePage';
function App() { return ( <Router> <Switch> <Route path="/profile" component={ProfilePage} /> </Switch> </Router> ); }export default App;
A continuación, cree un componente ProfilePage.js
. Este componente mostrará la información del perfil del usuario, incluido su avatar, nombre y correo electrónico, y permitirá al usuario actualizar su información mediante un formulario.jsx.
import React, { useState, useEffect } from 'react'; import axios from 'axios'; import Avatar from '@sabfry/avatarium'; import { Formik, Form, Field } from 'formik';
const ProfilePage = () => { const [user, setUser] = useState(null); useEffect(() => { axios.get('https://api.example.com/user') .then(response => setUser(response.data)) .catch(error => console.error('Error fetching user data:', error)); }, []); if (!user) return <div>Loading...</div>; return ( <div className="profile-page"> <h1>Profile Page</h1> <div className="profile-info"> <Avatar theme="blobs" /> <h2>{user.name}</h2> <p>{user.email}</p> <Formik initialValues={{ name: user.name, email: user.email }} onSubmit={(values, { setSubmitting }) => { axios.post('https://api.example.com/user/update', values) .then(response => { setUser(response.data); setSubmitting(false); }) .catch(error => { console.error('Error updating user data:', error); setSubmitting(false); }); }} > {({ isSubmitting }) => ( <Form> <div> <label htmlFor="name">Name</label> <Field id="name" name="name" placeholder="John Doe" /> </div> <div> <label htmlFor="email">Email</label> <Field id="email" name="email" placeholder="[email protected]" type="email" /> </div> <button type="submit" disabled={isSubmitting}> Update </button> </Form> )} </Formik> </div> </div> ); };export default ProfilePage;
En este componente:
useState
para administrar los datos del usuario.
useEffect
obtiene datos del usuario de una API simulada cuando se monta el componente.
Avatar
de Avatarium para mostrar un avatar con un tema aleatorio.
Agregue algo de CSS básico para diseñar la página de perfil. Cree un archivo ProfilePage.css
e impórtelo a ProfilePage.js
.
/* ProfilePage.css */ .profile-page { display: flex; flex-direction: column; align-items: center; padding: 20px; }
.profile-info { display: flex; flex-direction: column; align-items: center; border: 1px solid #ddd; padding: 20px; border-radius: 10px; background-color: #f9f9f9; }.profile-info div { margin-bottom: 10px; }button { background-color: #007bff; color: white; border: none; padding: 10px 20px; border-radius: 5px; cursor: pointer; }button:disabled { background-color: #c0c0c0; cursor: not-allowed; }
Importe este archivo CSS a su ProfilePage.js
:
import './ProfilePage.css';
Finalmente, ejecute su aplicación para ver la página de perfil en acción:
npm start
Navegue a http://localhost:3000/profile
para ver la página de perfil.
En este tutorial, creamos una página de perfil simple usando React, Avatarium, React Router, Axios y Formik. Esta página obtiene datos del usuario de una API y los muestra junto con un avatar generado aleatoriamente, y permite al usuario actualizar su información mediante un formulario. Puede ampliar este ejemplo agregando más funciones, como campos adicionales para información del usuario, reglas de validación para el formulario y estilo mejorado.