Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Coloquei o .map() no Time.js

No vídeo "elevando a lista de times" eu fiquei em dúvida pq o .map() foi usado no App.js e não no Time.js (como foi feito na ListaSuspensa.js). A dúvida é questão de estilo, boas práticas, manutenção etc?

Eu coloquei o .map() no Time.js e deu certo, fiz assim:

no App.js

...
/* Meu código */
<Time itens={times}/>

/* código da aula
{times.map(time => 
<Time 
    key={time.nome} 
    nome={time.nome} 
    corPrimaria={time.corPrimaria} 
    corSecundaria={time.corSecundaria}/>)} */
...

No Time.js

import './Time.css'

const Time = (props) => {
/* código da aula
    const corDeFundo = {backgroundColor: props.corSecundaria}
    const corPrincipal = {borderColor: props.corPrimaria}
*/

/* Meu código */
    return (
        <div>
        {props.itens.map(time => {
            return (
                <section 
                    key={time.nome} 
                    style={{backgroundColor: time.corSecundaria}} 
                    className='time'
                >
                    <h3 style={{borderColor: time.corPrimaria}}>{time.nome}</h3>
                </section>
            )
        })}
        </div>

        /* Código da aula
        <section style={corDeFundo} className='time'>
             <h3 style={corPrincipal}>{props.nome}</h3>
        </section>
        */
    )
}

export default Time

Funcionou tudo ok.

3 respostas
solução!

Salve, André!

Acho que a principal diferença aqui é relacionado ao nome do componente e o que ele faz.

Como você tem um componente que, de fato, lista os times... eu chamaria ele de <ListaDeTimes /> ao invés de <Time />.

Um outro ponto é o possível reaproveitamento de código.

Se você precisar do componente de time para ser utilizado em outro lugar da aplicação... como seria? Teria de passar sempre um array de times?

Nesse tipo de questão, difícilmente existe certo e errado, mas sempre formas diferentes de atingir o mesmo objetivo.

Espero que eu tenha ajudado!

P.S.: Dar nome as coisas é sempre um desafio :P

Olá, Vinicios.

Muito obrigado pela resposta.

Ao avançar na aula (usando a minha opção acima) eu tive dificuldade em usar o colaboradores.filter() lá no Time.js (onde estava o .map).

Mesmo usando props.colaboradores.filter() o card aparecia em todos os times, no fim voltei a solução original.

Estou começando no React e essa aula de vocês foi muito boa para melhorar o meu entendimento.

Obrigado.

Que bom que curtiu, André!

Se pintar mais alguma dúvida, pode chegar aqui no fórum.

Abração!