Dev JS para React - Pt 4
Fala galera, bora para a quarta parte parte.
⚠️ Se você não viu a terceira parte, comece por aqui ⚠️
Hoje vamos criar nossos posts através de listas.
E para isso vamos utilizar nosso último código e criar ele através de uma lista, então agora você deve estar se perguntando, como assim uma lista?
Vamos imaginar que você precisa carregar uma lista de posts que vieram de seu banco de dados e precisa criar isso de maneira dinâmica, utilizando um loop para criar os posts.
Para realizar isso nosso código ficaria como abaixo
<html><head><style>.post-component{text-align: center;}.post-header-component{display: flex;justify-content: center;}.user-name-description,.post-description-component{padding-left: 9px;padding-top: 9px;}</style></head><body><div id="instagramPostApp"></div><script src="https://unpkg.com/react@17/umd/react.development.js"></script><script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script><!-- Babel Script --><script src="https://unpkg.com/@babel/standalone/babel.min.js"></script><script type="text/jsx">const instagramPostApp = document.getElementById("instagramPostApp")function AvatarImage() {return <img src="https://posts-decriptando.s3.amazonaws.com/post-instagram-component/256-512.webp" width="75" />}function Username() {return <span><strong>Nome do Usuário</strong></span>}function UserDescription() {return <p><small>Lorem ipsum summet</small></p>}function PostImage() {return <img src="https://posts-decriptando.s3.amazonaws.com/post-instagram-component/istockphoto-1226328537-170667a.jpeg" />}function PostDescription() {return <span>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus...</span>}function PostComponent(props) {return (<div class="post-component"><div class="post-header-component"><div class="user-avatar"><AvatarImage /></div ><div class="user-name-description"><Username username={props.username} /><UserDescription /></div ></div ><div class="post-body-component"><PostImage /></div ><div class="post-description-component"><Username username={props.username} />: <PostDescription /></div ></div >)}function BodyComponent() {const aPosts = [{username: "José da Silva"},{username: "Roberto Pereira"},{username: "Manuel Martins"}];return (<div class="body-component">{aPosts.map(oPost => (<PostComponent username={oPost.username} />))}</div >)}ReactDOM.render(<BodyComponent/>, instagramPostApp)</script></body></html>
Perfeito, agora se você abrir esse arquivo no browser você deve visualizar o seguinte:
Porém Olha o que apareceu no nosso Console.
Como você pode ver o React nos trouxe esse aviso sobre a falta de uma chave prop. Isso ocorre porque o React precisa de algo para identificar os itens de um array, para que ele saiba quais elementos deve atualizar no DOM.
E por enquanto, podemos usar os nomes pois eles são exclusivos no momento, mas é recomendável usar algo garantido como exclusivo, como uma ID.
Simples simples, apenas adicionar um novo prop chamada key e passar para ela sua chave, como abaixo:
<!-- ... --->return (<div class="body-component">{aPosts.map(oPost => (<PostComponent key={oPost.username} username={oPost.username} />))}</div >)<!-- ... --->
Pronto você conseguiu, avançou mais um passo no seu caminho de conhecimento do React.
E se quiser que tal enviar todos os outros dados para seu post e tornar ele dinâmico ao ponto de ser criado completamente com os dados da lista, eu se que você consegue!
Comentários
Postar um comentário