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

[Dúvida] problema com .map

Estou tendo problema na hora de criar os cards, quando coloco o codigo

{props.colaboradores.map( colaborador => <Colaborador /> )}

a tela fica toda branca e aparece a seguinte mensagem no console

index.js:9 Uncaught TypeError: Cannot read properties of undefined (reading 'map')
    at Time (index.js:9:1)
    at renderWithHooks (react-dom.development.js:16305:1)
    at mountIndeterminateComponent (react-dom.development.js:20074:1)
    at beginWork (react-dom.development.js:21587:1)
    at HTMLUnknownElement.callCallback (react-dom.development.js:4164:1)
    at Object.invokeGuardedCallbackDev (react-dom.development.js:4213:1)
    at invokeGuardedCallback (react-dom.development.js:4277:1)
    at beginWork$1 (react-dom.development.js:27451:1)
    at performUnitOfWork (react-dom.development.js:26557:1)
    at workLoopSync (react-dom.development.js:26466:1)
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 /> )}
</section>
    )
}

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

function App() {

  const times = [
    {
      nome: 'Programação',
      corPrimaria: '#57C278',
      corSecundaria: '#D9F7E9',
    },
    {
      nome: 'Front-End',
      corPrimaria: '#82CFFA',
      corSecundaria: '#E8F8FF',
  },
  {
      nome: 'Data Sciense',
      corPrimaria: '#A6D157',
      corSecundaria: '#F0F8E2',
  },
  {
      nome: 'Devops',
      corPrimaria: '#E06B69',
      corSecundaria: '#FDE7E8',
  },
  {
      nome: 'UX e Design',
      corPrimaria: '#D86EBF',
      corSecundaria: '#FAE95F5',
  },
  {
      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}
        colaborador={colaboradores}
        />)}

    </div>
  );
}

export default App;
2 respostas
solução!

Olá, Rafa! Tudo jóia?

Eu dei uma olhada no código que você compartilhou e notei que no componente <App/> você passa como props ao componente <Time/> o seguinte:

colaborador={colaboradores}

Só que ao tentar utilizar essa prop no componente Time você utiliza como:

{props.colaboradores.map( colaborador => <Colaborador /> )}

O seu componente não reconhece o props.colaboradores pois a prop que você passou foi a colaborador.

Então acredito que o problema seja esse. Corrija a linha de código no seu componente Time para

{props.colaborador.map( colaborador => <Colaborador /> )}

Abraços!

Muito obrigado, ajudou muito