Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Bug] .filter

quando utilizo o .filter em colaboradores nao lista nenhum colaborador cadastrado, mas se eu remover aparece todos que cadastrei

import { useState } from 'react';
import Banner from './componentes/Banner';
import Formulario from './componentes/Formulario';
import Time from './componentes/Time';

function App() {

  const times = [
    {
      nome: 'Front-end',
      corPrimaria: '#E8F8FF',
      corSecundaria: '#82CFFA'
    },
    {
      nome: 'Back-end',
      corPrimaria: '#F0F8E2',
      corSecundaria: '#A6D157'
    },
    {
      nome: 'Banco de dados',
      corPrimaria: '#FFF5D9',
      corSecundaria: '#FFBA05'
    },
    {
      nome: 'DevOps',
      corPrimaria: '#FDE7E8',
      corSecundaria: '#E06B69'
    }
  ]

  const [colaboradores, setColaboradores] = useState([])

  const novoColaborador = (colaborador) =>{
    setColaboradores([...colaboradores, colaborador])
  }

  return (
    <div className="App">
      <Banner />
      <Formulario nomesDosTimes={times.map(time => time.nome)} colaboradorCadastrado={colaborador => novoColaborador(colaborador)}/>

      {times.map(time => <Time 
        key={time.nome} 
        nome={time.nome} 
        corDeFundo={time.corPrimaria} 
        corSecundaria={time.corSecundaria}
        colaboradores={colaboradores.filter(colaborador => colaborador.nome === time.nome)}
      />)}


    </div>
  );
}

export default App;
import './Colaborador.css'

const Colaborador = (props) => {
    return (
        <div className='colaborador'>
            <div className='cabecalho'>
                <img src={props.imagem} alt={props.nome}/>
            </div>
            <div className='rodape'>
                <h4>{props.nome}</h4>
                <h5>{props.cargo}</h5>
            </div>
        </div>
    )
}

export default Colaborador
1 resposta
solução!

Olá Hirruá!

Tudo bem?

No caso você está tentando fazer a lógica com o colaborador.nome, sendo que é com o colaborador.time, no colaborador não tem o atributo nome, e sim time, já o time precisa ser pelo nome ai fica time.nome veja corrigido:

colaboradores={colaboradores.filter(colaborador => colaborador.time === time.nome)}

Espero ter ajudado e bons estudos!