Rodrigo Milesi
Rubén Ernesto Aragón Gil
Rodrigo Milesi
Rubén Ernesto Aragón Gil
Julian David Toro Medina
Mariano Gastón Paduani
Rubén Ernesto Aragón Gil
JOSE RAFAEL SISSA MENDOZA
Oswaldo Atahualpa
Daniel Rivas
Miguel Angel Choque Pacompia
Juan Castro
Vicente Benavides
Nelson Gonzalez Escalante
Pedro Moreno
Heriberto Gonzalez
Max Andy Diaz Neyra
Gerardo Castillo
Carlos Rodríguez
Lucas Frazzetta
Juan David Rodríguez Ortega
Leinerke Ilich Suarez Alcala
mars Dev
Julian Franco
Alan Cabrera
Carlos Rodríguez
Rodrigo Milesi
Esteban Beltran
Angel Rojas
Deymer Hernandez
Donovan RM
Joel Carlos Condori Callisaya
Pedro Alvarado Garcia
Andrés Muñoz
me gusto mucho la mezcla entre render props y render functions, ta potente
jjaa
La vida de un programador en un video 12 min 40 segundos...
🧑💻 Y listo, ingresamos la búsqueda y nos aparece que no hay resultados! 🥳 😳 Ay! Caray! No debería aparecernos el otro texto... 😅 Bueno, lo importante es que nos aparece que no hay resultados para... 😰 Ay! Caray! Esto es otro error!!!
jajajaja
un paréntesis que no fue puesto da mucho error jaja
Soy el único que piensa que la forma en como están enseñando React en estos dos cursos se hace de lo más enredado posible ? Y sé que sólo me sucede a mi, porque viendo los demás comentarios, todo mundo ama al profesor y su forma de enseñar pero para mí se me hace tan enredado que en una clase enseñe o explique algo y a las siguientes se borre todo o se cambie porque no es la mejor forma, siento como si no tuviera una estructura clara a la hora de enseñar, como que se va improvisando con cada clase, estoy súper enredado con este profesor y su forma de explicar.
Creo que podría ayudarte el no pensar que lo anterior es una solución definitiva si no una manera de hacer algo. Entiendo que puede causar bastante confusión pero piensa que te lo enseñan para que sepas que no se debe hacer, o si lo haces el porque se hace.
Porque enseñar lo que no se debe hacer? es una manera de enseñar como solucionar errores, tambien porque en el mundo laboral vas a encontrar código de todo tipo, código bien estructurado, código exageradamente estructurado (el obsesivo) y código mal estructurado (el perezoso), entonces es buena idea conocer todas las formas posibles de alcanzar un objetivo.
El profesor, basicamente nos esta enseñando que no existen balas de plata al momento de crear nuestros componentes utilizando React. Por eso son patrones de render y composición. Saludos
Mi solucion :/ {props.searchedTodos.map(props.render || props.children)}
:ok_hand:
Primera vez que veo lo de render props y render functions, tal vez sea porque es algo nuevo para mí, pero lo veo como hacer el código más confuso.
En el App.js:
totalTodos={totalTodos} searchedTodos={searchedTodos} searchText={searchValue} onEmptySearchResults={(searchText) => ( <p>No hay resultado para {searchText} </p> )}
TodoList.js:
const renderFunc = props.children || props.render; {!props.loading && !props.totalTodos && props.onEmptyTodos()} {!!props.totalTodos && !props.searchedTodos.length & props.onEmptySearchResults(props.searchText)} {props.searchedTodos.map(renderFunc)}
{(!!props.totalTodos && !props.searchedTodos.length) && props.onEmptySearchResults(props.searchText)}
Mi solución al reto fue hacerlo utilizando el poder de ES6+:
<ul> {props.searchedTodos.map(props.render || props.children)} </ul>
Además de ser la forma más simple de resolverlo, veo que lo envolviste acertadamente con sus respectivos <ul>... Creo que al profe se le pasó por alto esa parte, porque luego TodoItem renderiza <li> cuando se recorre el array
No hubo necesidad de pasar la propiedad searchValue en props, la pudimos concatenar directamente en el render functions
onEmptySearchResult={() => <p>No hay resultados para '{searchValue}'</p>}
Justamente pensé lo mismo yo en ese momento. Estaba ahí al alcance
Lo hice igual.
mas facil xd
{props.searchedTodos.map(props.render ?? props.children)}
Realice la misma solución jaja
De pronto si alguien tiene dudas con lo del doble operador !! Lo que hace es volver estricamente un valor en Booleano Ejemplo
const totalTodos = 0 const hayTodos = totalTodos console.log(hayTodos) // Esto da 0 const hayTodosBoolean = !!totalTodos console.log(hayTodosBoolean) // Esto da false const hayTodosBoolean2 = !totalTodos console.log(hayTodosBoolean2) // Esto da true /* With arrays */ const searchTodos = [] console.log(searchTodos.length) // Esto da 0. console.log(!searchTodos.length) // Esto da true. console.log(!!searchTodos.length) // Esto da false. searchTodos.push('Item one') console.log(!searchTodos.length) // Esto da false. console.log(!!searchTodos.length) // Esto da true.
He leído varios comentarios al respecto de si "x" camino es el correcto o "y" utilidad es la indicada. Y la verdad es que no la hay por sí sola, toda herramienta es buena en su contexto, ¿Usarías un martillo para arreglar unos lentes?, No.
El curso tiene la función de brindarte las herramientas para que sepas que existen y así saber usarlas en determinada situación.
Quizá en un "proyecto de la vida real", el flujo del proyecto no sea como en el curso, pero este no tiene la idea de parecerse lo más posible al "proyecto de la vida real", el objetivo es ondar por React y entender como usar cada utilidad de este, y ya.
Además de que todo es confuso por la naturalidad de aprender algo nuevo y cambiar cierta idea al respecto de como escribimos código o lo veníamos escribiendo, es natural estar perdido a momentos.
Saludos :)
Todos en el curso pasado burlándose de la doble negación que usaba el profesor y la verdadera utilidad es que si nos devuelve un valor diferente a false o true, la doble negación nos obliga a que nos de un booleano si o sí manteniendo el tipado y no se rompa la técnica del corto circuito con &&.
{props.searchedTodos.map(props.children)}
Gracias por la energía en la que enseñas!
Esta es mi solución declaro una variable y pongo una condición si existe props.children entonces lo iguala a esta variable, en caso de que no exista lo iguala a props.render
Más concretamente, una render prop es una prop que recibe una función que un componente utiliza para saber qué renderizar.
Yo habia creado esa lógica dentro del componente EmptyTodos:
function EmptyTodos({loading}) { return ( loading ? <p>Crea tu primera Tarea...</p> : <p>No se encuentra Nada!</p> ); } export { EmptyTodos };
recien en este curso distingo la diferencia entre render props y render funcion esta muy confuso esto
Al momento de pasar el searchValue por props al TodoList y hacer todo eso yo lo pase directamente al componente de la render prop.
Igual hice lo mismo pero no se cuál forma será mejor y porque debe haber una, a mi lo que me gusto de hacerlo así es que es menos código y la data viaja a menos lugares va directo