PropertyCard
Agora vamos implementar o componente PropertyCard
que vai exibir cada imóvel de forma mais detalhada.
Vamos começar criando o arquivo src/components/property-card.jsx
.
Já sabemos que esse componente vai receber suas informações de seu componente pai, portanto vamos precisar usar props. Vamos avaliar quais informações são necessárias nesse componente:
Temos um título
, uma imagem
, uma descrição
, localização
, preço
e uma badge informando se é um imóvel “em destaque”.
Esse é um exemplo perfeito para exemplificar as props de componentes. Observe que a estrutura de cada card do imóvel é a mesma, mas suas informações mudam de acordo com cada imóvel.
É exatamente para isso que servem as props. Elas vão “personalizar” o componente com as informações específicas.
Vamos relembrar o exemplo do corpo humano?
Imagine que cada parte do corpo é um componente. Esse componente pode ter propriedades que vão definir características específicas de cada parte. Por exemplo:
- O
cabelo
pode sercrespo
,liso
,ondulado
, etc. - As
olhos
podem serazuis
,castanhos
,verdes
, etc.
Voltando para o PropertyCard
, cada propriedade que ele recebe vai definir uma característica específica de cada imóvel.
Um detalhe interessante é que da mesma forma que podemos passar as props separadamente, podemos também passar o objeto inteiro.
Essa é mais uma das coisas que não tem um “certo ou errado”. No primeiro caso, fica mais verboso, porém mais fácil de entender. No segundo caso, fica mais curto, porém pode ser mais difícil de entender.
Com o TypeScript, eu tendo a preferir a segunda opção, porque com o tipo das props, fica fácil de saber o que tem dentro de cada objeto. No nosso caso, vou preferir a primeira opção para deixar mais explícito.
Então vamos continuar com a primeira opção.
Repare que estamos utilizando renderização condicional para exibir a badge de “Destaque” caso o imóvel seja um destaque.
Usando o componente PropertyCard
Agora vamos voltar no componente FeaturedProperties
e utilizar o PropertyCard
para exibir cada imóvel.
O primeiro detalhe importante aqui é a propriedade key
. Toda vez que criamos uma lista de componentes, precisamos informar uma chave única para cada componente. Isso é importante para o React saber quais componentes foram adicionados, modificados ou removidos.
Lembra do algoritmo de reconciliação do React que comentamos anteriormente? Esse key
vai ser utilizado exatamente para ajudar esse algoritmo a montar o diff
do DOM. Por isso é importante que seja um valor único.
Dica: desestruturação de objetos
Uma dica interessante é que podemos desestruturar o objeto diretamente nas props, caso as propriedades do objeto sejam as mesmas das props do componente.
Para finalizar essa etapa, lembre-se de adicionar as imagens dos imóveis na pasta src/assets/properties
.