Quando clico no ícone de deletar, a função está deletando todos os colaboradores e times de uma vez, ao invés de apagar somente o que foi clicado. Tentei gerar o id do colaborador diretamente pelo index.js do componente de time com o uuidv4 e passá-lo como prop para o componente de colaborador mas mesmo assim o bug persiste. Caso possam me ajudar, o link do repositório é https://github.com/gustavo-atanazio/organo.git
Código do componente de time:
Código do componente de colaborador:
import {AiFillCloseCircle, AiFillHeart, AiOutlineHeart} from 'react-icons/ai'
import './Colaborador.css'
const Colaborador = ({colaborador, corDeFundo, aoDeletar, aoFavoritar}) => {
function favoritar() {
aoFavoritar(colaborador.id)
}
const propsFavorito = {
size: 25,
onClick: favoritar
}
return (
<div className='colaborador'>
<AiFillCloseCircle
size={25}
className='deletar'
onClick={() => aoDeletar(colaborador.id)}
/>
<div className='cabecalho' style={{backgroundColor: corDeFundo}}>
<img src={colaborador.imagem} alt={colaborador.nome}/>
</div>
<div className='rodape'>
<h4>{colaborador.nome}</h4>
<h5>{colaborador.cargo}</h5>
<div className='favoritar'>
{colaborador.favorito
? <AiFillHeart {...propsFavorito} color='#FF0000'/>
: <AiOutlineHeart {...propsFavorito}/>
}
</div>
</div>
</div>
)
}
export default Colaborador;
Código do App.js:
import { useState } from 'react';
import Banner from './componentes/Banner/Banner.js';
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',
},
{
id: uuidv4(),
nome: 'Front-End',
cor: '#82CFFA',
},
{
id: uuidv4(),
nome: 'Data Science',
cor: '#A6D157',
},
{
id: uuidv4(),
nome: 'Devops',
cor: '#E06B69',
},
{
id: uuidv4(),
nome: 'UX e Design',
cor: '#D86EBF',
},
{
id: uuidv4(),
nome: 'Mobile',
cor: '#FEBA05',
},
{
id: uuidv4(),
nome: 'Inovação e Gestão',
cor: '#FF8A29',
}
]);
const [colaboradores, setColaboradores] = useState([]);
function deletarColaborador(id) {
setColaboradores(colaboradores.filter(colaborador => colaborador.id !== id))
}
function mudarCorDoTime(cor, id) {
setTimes(times.map(time => {
if (time.id === id) {
time.cor = cor
}
return time;
}))
}
function cadastrarTime(novoTime) {
setTimes([...times, {...novoTime, id: uuidv4()}])
}
function resolverFavorito(id) {
setColaboradores(colaboradores.map(colaborador => {
if (colaborador.id === id) colaborador.favorito = !colaborador.favorito;
return colaborador;
}))
}
return (
<div className="App">
<Banner />
<Formulario
cadastrarTime={cadastrarTime}
times={times.map(time => time.nome)}
aoCadastrar={colaborador => setColaboradores([...colaboradores, colaborador])}
/>
{times.map(time =>
<Time
aoFavoritar={resolverFavorito}
mudarCor={mudarCorDoTime}
key={time.id}
time={time}
colaboradores={colaboradores.filter(colaborador => colaborador.time === time.nome)}
aoDeletar={deletarColaborador}
/>
)}
<Rodape />
</div>
);
}
export default App;