2
respostas

[Bug] Não sei mais o que fazer, o form é enviado, porém novo time não aparece na lista!

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas

import { useState } from "react"; import Banner from "./componentes/Banner"; import Formulario from "./componentes/Formulario"; import Rodape from "./componentes/Rodape"; import Time from "./componentes/Time"; import { v4 as uuidv4 } from 'uuid';

function App() {

const [times, setTimes] = useState([ { id: uuidv4(), nome: 'Programação', cor: '#57C278' }, ])

const inicial = [ { id: uuidv4(), nome: 'JULIANA AMOASEI', cargo: 'Desenvolvedora de software e instrutora', imagem: 'https://www.alura.com.br/assets/img/lideres/juliana-amoasei.1647533644.jpeg', time: times[0].nome }, ] const [colaboradores, setColaboradores] = useState(inicial)

function deletCollaborator(id) { setColaboradores(colaboradores.filter(colaborador => colaborador.id !== id)); }

function changeTeamColor(color, id) { setTimes(times.map(time => { if (time.id === id) { time.cor = color } return time; })) } function registerTime(newTime) { setTimes([...times, { ...newTime, id: uuidv4() } ]) } return (

<Formulario registerTime={registerTime} times={times.map(time => time.nome)} aoCadastrar={colaborador => setColaboradores([...colaboradores, colaborador])} />

Minha organização

{times.map((time, indice) => <Time changeColor={changeTeamColor} key={indice} time={time} colaboradores={colaboradores.filter(colaborador => colaborador.time === time.nome)} whenDeleting={deletCollaborator} /> )}
); } export default App;

import { useState } from 'react' import Botao from '../Botao' import CampoTexto from '../CampoTexto' import ListaSuspensa from '../ListaSuspensa' import './formulario.css'

const Formulario = (props) => {

const [nome, setNome] = useState('')
const [cargo, setCargo] = useState('')
const [imagem, setImagem] = useState('')
const [time, setTime] = useState('')
const [nomeTime, setNomeTime] = useState('')
const [corTime, setCorTime] = useState('')

const aoSubmeter = (evento) => {
    evento.preventDefault()
    console.log('form enviado', nome, cargo, imagem, time)
    props.aoCadastrar({
        nome,
        cargo,
        imagem,
        time,            
    })
}

return (
    <section className="formulario-container">
        <form className="formulario" onSubmit={aoSubmeter}>
            <h2>Preencha os dados para criar o card do colaborador.</h2>
            <CampoTexto
                obrigatorio={true}
                label='Nome'
                placeholder='Digite seu nome '
                valor={nome}
                aoAlterado={valor => setNome(valor)} />
            <CampoTexto
                obrigatorio={true}
                label='Cargo'
                placeholder='Digite seu cargo '
                valor={cargo}
                aoAlterado={valor => setCargo(valor)} />
            <CampoTexto
                label='Imagem'
                placeholder='Informe o endereço da imagem '
                aoAlterado={valor => setImagem(valor)} />
            <ListaSuspensa
                obrigatorio={true}
                label='Times'
                items={props.times}
                valor={time}
                aoAlterado={valor => setTime(valor)} />
            <Botao texto='Criar Card' />
        </form>
        <form className="formulario" onSubmit={(event) => {
            event.preventDefault()
            console.log('forme enviado: ', nomeTime, corTime)
            props.registerTime({
                nomeTime: nomeTime,
                corTime: corTime
            })
            setNomeTime('')
            setCorTime('')
        }}>
            <h2>Preencha os dados para criar um novo time.</h2>
            <CampoTexto
                obrigatorio
                label='Nome do Time'
                placeholder='Digite seu nome do time'
                valor={nomeTime}
                aoAlterado={valor => setNomeTime(valor)}
            />
            <CampoTexto
                obrigatorio
                label='Cor do time'
                placeholder='Digite a cor do time'
                valor={corTime}
                aoAlterado={valor => setCorTime(valor)}
            />
            <Botao texto='Criar Novo Time' />
        </form>
    </section>
)

}

export default Formulario

Bom dia, não consegui ver no seu código a criação da função de registra o time no app.js. Será que você esqueceu de criar?