⊗jsrtPmCpPS 85 of 112 menu

Pasar estados a componentes hijos en React

Supongamos que tenemos un array con productos:

const initProds = [ {id: id(), name: 'product1', cost: 100}, {id: id(), name: 'product2', cost: 200}, {id: id(), name: 'product3', cost: 300}, ];

Supongamos que este array se encuentra en el componente Products. Escribamos estos productos en el estado del componente:

function Products() { const [prods, setProds] = useState(initProds); }

Ahora recorramos los productos con un bucle y mostrémoslos en algún markup:

function Products() { const [prods, setProds] = useState(initProds); const items = prods.map(prod => { return <div key={prod.id}> name: <span>{prod.name}</span>, cost: <span>{prod.cost}</span> </div>; }); return <div> {items} </div>; }

Como puedes ver, el contenido de nuestro bucle map es bastante complejo, especialmente si el markup del producto crece en el futuro. Tal complejidad dificulta la lectura, comprensión y mantenimiento del código.

Será mejor extraer el código responsable de mostrar el producto en un componente separado. Llamémoslo Product. Aquí está el código de nuestro componente:

function Product({ name, cost }) { return <div> name: <span>{name}</span>, cost: <span>{cost}</span> </div>; }

Ahora dentro del componente Products en el bucle map usemos componentes hijos Product:

function Products() { const [prods, setProds] = useState(initProds); const items = prods.map(prod => { return <Product key ={prod.id} name={prod.name} cost={prod.cost} />; }); return <div> {items} </div>; }

Como puedes ver, ahora el código del bucle se simplificó y se volvió más comprensible. Además, ahora la visualización del producto la maneja un componente separado, en el cual podemos crear y luego editar el markup de los productos.

Técnicamente, tenemos que el componente padre tiene un estado con datos, y los componentes hijos reciben estos datos en forma de props y los muestran de la manera que necesitamos.

En el estado del componente Users se da el siguiente array:

const initUsers = [ {id: id(), name: 'user1', surname: 'surn1', age: 30}, {id: id(), name: 'user2', surname: 'surn2', age: 31}, {id: id(), name: 'user3', surname: 'surn3', age: 32}, ];

Recorre este array con un bucle y muestra todos los usuarios en la pantalla. Crea para la visualización del usuario un componente separado User.

Español
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Usamos cookies para el funcionamiento del sitio, análisis y personalización. El procesamiento de datos se realiza de acuerdo con la Política de privacidad.
aceptar todas configurar rechazar