⊗jsrtPmCpPS 85 of 112 menu

Passando estados para componentes filhos no React

Suponha que tenhamos um array de produtos:

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

Suponha que este array esteja localizado no componente Products. Vamos armazenar esses produtos no estado do componente:

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

Agora vamos iterar pelos produtos com um loop e exibi-los em alguma marcação:

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

Como você pode ver, o conteúdo do nosso loop map é bastante complexo, especialmente se a marcação do produto crescer no futuro. Essa complexidade dificulta a leitura, compreensão e manutenção do código.

Seria melhor extrair o código responsável pela exibição do produto em um componente separado. Vamos chamá-lo de Product. Aqui está o código do nosso componente:

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

Agora, dentro do componente Products, no loop map, vamos usar componentes filhos 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 você pode ver, o código do loop agora foi simplificado e tornou-se mais fácil de entender. Além disso, agora a exibição do produto é responsabilidade de um componente separado, no qual podemos criar e depois editar a marcação dos produtos.

Tecnicamente, temos que o componente pai possui um estado com os dados, e os componentes filhos recebem esses dados na forma de props e os exibem da maneira que desejamos.

No estado do componente Users é dado o seguinte 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}, ];

Itere por este array com um loop e exiba todos os usuários na tela. Crie um componente separado User para exibir cada usuário.

Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar