Migración de modales a rutas en React: implementación práctica
Clase 22 de 30 • Curso de React.js: Navegación con React Router
Resumen
¿Cómo simplificar el proceso de navegación en una aplicación React eliminando portales?
La gestión de rutas y la navegación en aplicaciones de React puede convertirse en un desafío si no se utiliza un enfoque eficiente. Históricamente, esto podría incluir dependencias adicionales como portales y modales, pero tal como describe el instructor, hay una tendencia en la industria al simplificar el diseño usando rutas en vez de portales, aprovechando React Router DOM. Los siguientes pasos te guiarán en cómo sustituir eficazmente los portales por rutas para mejorar la navegación de tu aplicación.
¿Qué implica eliminar modales y portales?
El primer paso es identificar todos los componentes relacionados con el uso de portales, como modales. En el código, se puede observar instrucciones como OpenModal
que necesitan ser removidas. Una vez ubicados, se reemplazan por rutas utilizando useNavigate
de React Router DOM. La función navigate
es importada y configurada adecuadamente para permitir que los botones redirijan a nuevas rutas específicas, como /new
.
import { useNavigate } from 'react-router-dom';
const MyComponent = () => {
const navigate = useNavigate();
return (
<button onClick={() => navigate('/new')}>Create New To-Do</button>
);
};
¿Cómo adaptar componentes para la navegación entre rutas?
El siguiente paso es modificar cada componente que interactuaba con los portales para que funcione con la nueva lógica de rutas. Esto involucra actualizar las propiedades que recibían y definían en componentes como ToDoForm
. Las propiedades que controlaban la visibilidad del modal deben ser reemplazadas por eventos que manipulan las rutas.
// Antes
<button onClick={props.setOpenModal(!props.openModal)}></button>
// Después
<button onClick={props.onClick}></button>
¿Cómo integrar la función de crear To-Dos con navegación entre rutas?
Los formularios de creación y edición de To-Dos son centrales en la aplicación. Cada uno se encapsula en una nueva página con lógica para enviar los datos ingresados a través de props
y manejar los eventos relacionados. Aquí el uso de navigate
permite volver al home tras un envío exitoso.
const NewToDoPage = () => {
const navigate = useNavigate();
const handleAddToDo = () => {
// Lógica para añadir To-Do
// Luego redirigir al home
navigate('/');
};
return (
<ToDoForm
label="Escribe tu nuevo to-do"
submitText="Añadir"
onSubmit={handleAddToDo}
/>
);
};
¿Cómo personalizar los componentes para la página de edición?
Selecciona qué propiedades del componente deben ajustarse dinámicamente, como los textos de los botones o encabezados dependiendo de si se está creando o editando un To-Do. Define propiedades como label
y submitText
para reflejar acciones correctas según la operación que el usuario desee realizar.
const EditToDoPage = ({ todoId }) => {
const navigate = useNavigate();
const handleEditToDo = () => {
// Lógica para editar To-Do
// Luego redirigir al home
navigate('/');
};
return (
<ToDoForm
label="Edita tu To-Do"
submitText="Editar"
onSubmit={handleEditToDo}
/>
);
};
Consejos finales para una navegación robusta en React
- Mantener simples las rutas: Asegúrate de que las rutas sean descriptivas y adecuadas para mejorar la experiencia del usuario.
- Utilizar componentes reutilizables: Diseña componentes que puedan ser reutilizados con facilidad ajustando solamente las propiedades necesarias.
- Pruebas de funcionalidad: Prueba cada cambio realizado en la interfaz para asegurarte de que la navegación entre componentes se mezclen de manera intuitiva.
Implementar estas mejores prácticas no solo ayudará a mantener tu código limpio y eficiente, sino que también proporcionará una experiencia de usuario superior al simplificar la navegación a través de rutas en lugar de utilizar portales complicados. Sigue explorando y mejorando tus habilidades, la práctica constante es la clave para el dominio del desarrollo web.