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

[Bug] Colaboradores não são adicionados

Olá! Estou com um problema que ao preencher o formulário e adicionar o colaborador, nada está acontecendo. Comparei com o código do professor, mas ainda não encontrei o erro Este é meu código:

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

function App() {

  const times = [
    {
        nome: 'Programação',
        corPrimaria: '#57C278',
        corSecundaria: '#D9F7E9',
    },
    {
        nome: 'Front-End',
        corPrimaria: '#82CFFA',
        corSecundaria: '#E8F8FF',
    },
    {
        nome: 'Data Science',
        corPrimaria: '#A6D157',
        corSecundaria: '#F0F8E2',
    },
    {
        nome: 'Devops',
        corPrimaria: '#E06B69',
        corSecundaria: '#FDE7E8',
    },
    {
        nome: 'UX e Design',
        corPrimaria: '#D86EBF',
        corSecundaria: '#FAE5F5',
    },
    {
        nome: 'Mobile',
        corPrimaria: '#FEBA05',
        corSecundaria: '#FFF5D9',
    },
    {
        nome: 'Inovação e Gestão',
        corPrimaria: '#FF8A29',
        corSecundaria: '#FFEEDF',
    }
  
]

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

  const aoNovoColaboradorAdicionado = (colaborador) => {
    console.log(colaborador)
    setColaboradores([...colaboradores, colaborador])
  }

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

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

    </div>
  );
}

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

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

export default Colaborador
import Colaborador from '../Colaborador'
import './Time.css'

const Time = (props) => {
    const css = {backgroundColor: props.corSecundaria}
    
    return (
        <section className='time' style={css}>
            <h3 style={{ borderColor: props.corPrimaria }}>{props.nome}</h3>
            {props.colaboradores.map(colaborador => <Colaborador nome={colaborador.nome} cargo={colaborador.cargo} imagem={colaborador.imagem}/>)}
        </section>
    )
}

export default Time

O console: Insira aqui a descrição dessa imagem para ajudar na acessibilidadeSe facilitar, aqui está o repositório, branch aula-4 https://github.com/gbrllcavichion/organo

2 respostas
solução!

Oi, Gabrielle, tudo bem?

Muito obrigado por compartilhar o link do seu GitHub. Baixei o seu código e ao testar percebi que, quando selecionamos qualquer escola que não seja programação, o colaborador é adicionado corretamente, mas quando mantemos o campo com a categoria com a qual ele vem preenchido, neste caso, o time de programação, e clicamos no botão "Criar Card", o colaborador não é adicionado, pois o valor inicial do estado foi dado como vazio por meio do código const [time, setTime] = useState(``).

Para solucionar esse problema precisamos indicar que o estado inicial é o time de "Programação" por meio da alteração do código no arquivo "index.js" da componente "Formulario". Ficaria assim:

const [time, setTime] = useState(`Programação`)

Dessa forma, estamos informando que o estado inicial tem o valor do time de Programação e, portanto, os colaboradores ao serem criados, devem ser adicionados a este time.

Espero ter ajudado. Caso tenha dúvidas, conte com o fórum. Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Muiiito obrigada Rodrigo!!! Abraços!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software