Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

[Duda] Refactorizando código

Esta clase me dejó confuso y perdido en cuanto los cambios que realizó harland en el código, no entendí exactamente lo que hizo harland En el archivo listadeopciones, el código estaba así antes en esta parte

        const equipos = [
            'Programación',
            'Front End',
            'Data Science',
            'DevOps',
            'Diseño UX',
            'Móvil',
            'Innovación y Gestión'
        ]

    return <div className='lista-opciones'>
        <label>Equipos</label>
        <select value={props.valor} onChange={manejarCambio}>
            <option value="" disabled defaultValue="" hidden>Seleccionar equipo</option>
            {equipos.map((equipo, index) => <option key={index} value={equipo}>{equipo}</option>)}
        </select>
    </div> 

Ahora quedó así, pero con el array eliminado, lo que cambio fue que en equipos.map lo modifica como props.equipos.map

    return <div className='lista-opciones'>
        <label>Equipos</label>
        <select value={props.valor} onChange={manejarCambio}>
            <option value="" disabled defaultValue="" hidden>Seleccionar equipo</option>
            {props.equipos.map((equipo, index) => <option key={index} value={equipo}>{equipo}</option>)}
        </select>
    </div>

En App.js en el componente Formulario le agrega

equipos={equipos.map((equipo) => equipo.titulo)} 

Vale, con el map recorre el array de objetos de equipo y devuelve la propiedad titulo, pero aún así no logro entenderlo del todo. A partir de aquí cuando hace prueba en el navegador al dar click para que muestre el formulario le sale la página en blanco, no comprendo el error, pero cuando comenta la línea de props.equipos.map ahí si le sale el formulario, por qué? Luego harland comenta que en App.js en el componente formulario recibe un objeto y ahora no es un formulario Ahora en en Formulario.js en la función esta le pasa el parametro de props, y en el componente le agrega equipos={props.equipos}, la cual supongo que aquí pasa el listado de equipos del array, y ahora ya cuando descomenta la línea la línea de props.equipos.map ya el formulario se muestra, bueno y veo que lo fundamental de este cambio fue el arreglo de objetos de equipos de App.js. Aún así no logre asimilarlo, alguien que lo haya entendido me puede dar una explicación especifica? y otra duda que me surge, en caso de no hacer estos cambios afectaría el funcionamiento de la app en cuanto se implemente más funciones de apartir en adelante siguiendo las clases de este curso?

2 respuestas
solución!

¡Hola Edwin!

Permíteme explicarte paso a paso lo que sucedió.

Antes, en el archivo "listadeopciones", tenías un array llamado "equipos" que contenía diferentes opciones. Luego, en el componente de lista de opciones, utilizabas ese array para generar las opciones del select en el formulario.

Sin embargo, Harland decidió refactorizar el código para hacerlo más eficiente y mantener la información en un solo lugar. En lugar de tener el array "equipos" en el archivo "listadeopciones", ahora se pasa como una prop llamada "equipos" desde el componente padre (App.js) al componente hijo (ListaOpciones).

En App.js, Harland utiliza el método map para recorrer el array de objetos "equipos" y devolver solo la propiedad "titulo" de cada objeto. Esto se hace así: equipos.map((equipo) => equipo.titulo). De esta manera, se pasa una lista de títulos de equipos al componente ListaOpciones.

En el componente ListaOpciones, ahora puedes acceder a los equipos a través de props.equipos. Entonces, en lugar de utilizar el array directamente, utilizas props.equipos.map para generar las opciones del select en el formulario.

En cuanto a tu pregunta sobre por qué la página se muestra en blanco cuando descomentas la línea de props.equipos.map, podría ser debido a un error en la forma en que se están pasando los datos desde el componente padre. Te sugiero revisar si estás pasando correctamente el array de objetos "equipos" como una prop al componente ListaOpciones.

En cuanto a tu segunda pregunta, si no se realizan estos cambios, es posible que la aplicación no funcione correctamente cuando se implementen más funciones en el futuro. Al mantener la información en un solo lugar y pasarla como props, se facilita la gestión de los datos y se evitan posibles errores.

Espero que esta explicación haya aclarado tus dudas. Si tienes alguna pregunta adicional, no dudes en preguntar. ¡Estoy aquí para ayudarte!

¡Saludos!

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

Hola Bruno. Mil gracias por tu explicación, despejó un poco mi duda