Fala João, tudo bem?
Com base no código que você compartilhou vou comentar aqui o que observei que você pode tentar como solução para esse problema.
Vi que você criou um componente <Main />
para lidar com a renderização dos times e dos colaboradores.
<div className="App">
<Header />
<Form
times={times.map((time) => time.name)}
signInColaborator={(colaborator) => newColaborator(colaborator)}
/>
<Main />
</div>
E neste componente você está recebendo como props
e tentando acessar os colaboradores através de props.colaborators
.
export function Main(props) {
// ...
}
{props.colaborators.map((colaborator) => (
<Dev
name={colaborator.name}
office={colaborator.office}
desc={colaborator.desc}
image={colaborator.image}
></Dev>
))}
O problema aqui é que você não passou essa prop para o componente <Main />
, então o React não entende essa declaração.
Outro ponto de melhoria está nos componentes <Main />
e <App/>
, ambos possuem o array times
como um código que se repete. Não é uma boa prática repetir códigos. Uma sugestão é permanecer com o array times no componente <App/>
e passá-lo como também como uma prop ao componente <Main />
.
Gostei que você percebeu que tanto o time como os colaboradores poderiam ser componentes separados e criou componentes para lidar com a responsabilidade de renderizar o que fosse preciso. Isso tá muito alinhado a um dos princípios de SOLID e boas práticas de escrita de código. Parabéns!
Espero ter ajudado! Grande abraço.
Caso este post tenha lhe ajudado, por favor, marcar como solucionado. ✓