Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

[Duda] Me siento engorroso, confundido y perdido con esta clase

Qué se supone que hace esto?

export function valida(input){
    const tipoDeInput = input.dataset.tipo;
    if(validadores[tipoDeInput]){
        validadores[tipoDeInput](input);
    }
}

const validadores = {
    nacimiento: (input) => validarNacimiento(input),
}

No se deja claro y es poco especifico al comprenderlo, en la función valida tengo entendido que la constante almacena el data atribute del html data-tipo="nacimiento", pero la condicional si no la entiendo, ahora en la constante validadores que es un objeto se supone que nacimiento (propiedad) es una función, por qué y cómo? con parámetro input (qué no sé exactamente a que viene) luego se supone que retorna validarNacimiento(input)?

import { valida } from "./validaciones.js";

const inputs = document.querySelectorAll("input");

inputs.forEach((input) => {
  input.addEventListener("blur", (input) => {
    valida(input.target);
  });
});

Ahora en el archivo app.js me pierdo más, ok hay una constante que almacena todos los input del html, pero porqué? no sé supone que se está validando fecha en el otro archivo?, ahora meten el método forEarch que para algunos de acá no comprendemos ese método, luego adentro hace un addeventlistener, que creo que hace lo mismo a como estaba anteriormente:

const inputNacimiento = document.querySelector('#birth');

inputNacimiento.addEventListener('blur', (evento) => {
    validarNacimiento(evento.target);

pero ahora con el valida, tampoco entiendo de donde sale el parámetro input ahí que se repite en cada parámetro Poco clara esta clase, mejor hubiera dejado como estaba el código que a esto que se me hizo tedioso

2 respuestas
solución!

¡Hola Edwin!

Entiendo que te sientas confundido con esta clase. Permíteme explicarte un poco más sobre lo que está sucediendo en el código.

En la función valida, el parámetro input representa el elemento HTML que se está validando. La constante tipoDeInput almacena el valor del atributo data-tipo de ese elemento. Luego, se verifica si existe una función de validación correspondiente a ese tipo en el objeto validadores. En este caso, la única función de validación existente es validarNacimiento, por lo que se llama a esa función pasando el input como parámetro.

En el archivo app.js, la constante inputs almacena todos los elementos input del HTML. Esto se hace para poder agregar el evento blur a cada uno de ellos. El método forEach se utiliza para iterar sobre cada elemento input y agregar el evento. Dentro de la función de callback del forEach, input representa cada uno de los elementos input en cada iteración.

En el ejemplo que muestras en app.js, se está utilizando el evento blur para llamar a la función valida y pasar el elemento input como parámetro. Esto es similar a lo que se hace en el otro ejemplo que muestras en el archivo app.js, donde se llama a la función validarNacimiento pasando el evento.target como parámetro.

En resumen, el parámetro input se utiliza para representar el elemento HTML que se está validando y se pasa como argumento a las funciones de validación correspondientes.

Espero que esta explicación haya aclarado tus dudas. Si tienes alguna otra pregunta, estaré encantado de ayudarte.

¡Espero haber ayudado y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios! :)

Hola Rafaela Gracias por tu respuesta, sinceramente despejó un poco mi duda, gracias por compartirla