Generación de IDs únicos para gestionar tareas en React
Clase 21 de 30 • Curso de React.js: Navegación con React Router
Contenido del curso
Introducción a React Router DOM 6
- 4

Instalación de React Router DOM 6 en un proyecto React
11:18 min - 5

Uso de Hash Router en Aplicaciones Web con React Router DOM
07:26 min - 6

Creación de Rutas Dinámicas con React Router DOM 6
10:41 min - 7

Navegación en React Router: Uso de Link y NavLink
13:18 min - 8

Rutas dinámicas con React Router DOM y useParams
15:36 min - 9

Uso de useNavigate en React Router DOM para navegación dinámica
08:57 min - 10

Uso de Outlet y Nested Routes en React Router DOM 6
06:56 min
Fake authentication con React Router DOM 6
- 11

Autenticación y Autorización en Apps con React Router y Hooks
23:48 min - 12

Control de Acceso en Menú con Autenticación React
09:50 min - 13

Protección de Rutas con React Router y Hooks
13:46 min - 14

Roles y permisos en aplicaciones web: Autenticación y autorización
11:57 min - 15

Retos avanzados en React: manejo de estado y composición de componentes
08:21 min - 16

Mejorando la Redirección Post-Login en Aplicaciones Web
03:42 min - 17

Roles y Permisos Avanzados en React Router v6
04:57 min
React Router en TODO Machine
- 18

Migración de Todo Machine a React Router 6
11:33 min - 19

Organización de carpetas y rutas en React con React Router DOM 6
18:40 min - 20

Maquetación de Botón Editar en Lista de Tareas con React
12:19 min - 21

Generación de IDs únicos para gestionar tareas en React
Viendo ahora - 22

Migración de modales a rutas en React: implementación práctica
17:37 min - 23

Editar ToDos en React con Custom Hook y URL Parameters
14:03 min - 24

Mejora de la Experiencia del Usuario al Editar To Do's en React
21:55 min - 25

Implementación de React Router en Proyectos Legacy
11:07 min
Próximos pasos
- 26

Filtrado de Búsquedas en URL con React Router
03:42 min - 27

Migración de React Router: de la versión 6 a la 5 en proyectos empresariales
07:10 min - 28

Clonación de Platzi Movies usando React y React Router
01:30 min - 29

Clonación de React Router en Componentes React
02:21 min - 30

Navegación Avanzada con React Router DOM 6
05:55 min
¿Cómo cambiar la lógica de su aplicación de tareas?
Para crear una aplicación robusta de tareas (Tudus) y permitir futuras funcionalidades como la edición de tareas mediante rutas únicas, es esencial alejarse de identificarlas por su texto y empezar a usarlas por su ID. En esta guía, descubre cómo transformar tu aplicación para lograrlo usando hooks personalizados en React.
¿Por qué es necesaria la identificación por ID en las tareas?
El uso de un ID único para cada tarea permite:
- Facilidad de edición: La modificación del texto no altera el identificador.
- URL amigables: Las rutas pueden usar IDs para referenciar tareas específicas sin importar cambios en el texto.
- Estructuras de datos coherentes: Al versionar tus estructuras de datos, puedes acomodar futuras actualizaciones sin generar errores en versiones anteriores.
¿Cómo integrar un sistema de generación de IDs?
Para implementar un generador de IDs en tu hook customizado useTudus, sigue estos pasos:
-
Crear un generador de IDs: Al crear un todo, genera un ID nuevo utilizando la lista de tareas existentes.
const newTuduID = (tuduList) => { if (!tuduList || tuduList.length === 0) { return 1; } const idList = tuduList.map(tudu => tudu.id); const maxID = Math.max(...idList); return maxID + 1; }; -
Al añadir una nueva tarea: Usa la función
newTuduIDpara asignar un ID único a cada nuevo todo.const addTudu = (text) => { const id = newTuduID(tudus); const newTudu = { text, completed: false, id }; setTudus([...tudus, newTudu]); }; -
Actualizar las funciones de completar y borrar tareas: Cambia el reconocimiento de tareas por texto a ID.
const completeTudu = (id) => { const index = tudus.findIndex(tudu => tudu.id === id); if (index !== -1) { const newTudus = [...tudus]; newTudus[index].completed = !newTudus[index].completed; setTudus(newTudus); } }; const deleteTudu = (id) => { setTudus(tudus.filter(tudu => tudu.id !== id)); };
¿Cómo gestionar el almacenamiento local?
Introduce un sistema de versionado que permita controlar diferentes estructuras de datos en el local storage:
-
Versionado: Cambia la key del local storage cuando actualices la estructura de datos.
const useLocalStorage = (key, initialValue) => { const [storedValue, setStoredValue] = useState(() => { try { const item = window.localStorage.getItem(key); return item ? JSON.parse(item) : initialValue; } catch (error) { return initialValue; } }); const setValue = (value) => { try { setStoredValue(value); window.localStorage.setItem(key, JSON.stringify(value)); } catch (error) { console.error(error); } }; return [storedValue, setValue]; }; const [tudus, setTudus] = useLocalStorage('tudus-version2', []);
¿Qué actualizaciones realizar en el frontend?
Asegúrate de actualizar el frontend para reflejar los cambios en la estructura de datos:
- Cambia las references en cada componente para usar
tudu.iden lugar detudu.text. - Ajusta las claves únicas (
keys) en listas y componentes de React atudu.id.
¿Por qué no utilizar identificadores alternativos en JavaScript?
Aunque existen librerías como UUID o generadores de JavaScript para crear IDs, un enfoque basado en el valor máximo adicionando uno garantiza simplicidad y eficacia. Esto es particularmente útil si el número máximo de tareas no es extenso.
Invítate a explorar, experimentar e implementar estos cambios en tu aplicación de tareas. Recuerda siempre probar las modificaciones y velar por la consistencia en todos los componentes de tu aplicación. ¡Mantente motivado y continúa aprendiendo y mejorando tu código!