Não sei o que está acontecendo se coloco um console.log para verificar se está recebendo a id correta do colaborador aparece certo, mas não faz o filter ou não seta, o setColaboradores está funcionando, pois adiciona um novo colaborador, mas parece que só não faz o filter. Já copiei o código do github e colei no meu e não vai.
const [colaboradores, setColaboradores] = useState(inicial)
function deletarColaborador(id) {
setColaboradores(colaboradores.filter(colaborador => colaborador.id !== id));
}
Colaborador/Index.js:
import { IoCloseCircle } from "react-icons/io5";
import './Colaborador.css'
const Colaborador = ({colaborador, corDeFundo, aoDeletar}) => {
return (
<div className='colaborador' onClick={aoDeletar}>
<IoCloseCircle
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>
</div>
)
}
export default Colaborador
Time/index.js:
import Colaborador from '../Colaborador'
import './Time.css'
import hexToRgba from 'hex-to-rgba';
const Time = ({time, colaboradores, aoDeletar, mudarCor}) => {
return (
colaboradores.length > 0 && <section className='time' style={{ backgroundImage: 'url(/imagens/fundo.png)', backgroundColor: hexToRgba(time.cor,'0.75') }}>
<input onChange={evento => mudarCor(evento.target.value, time.id)} value={time.cor} type='color' className='input-cor' />
<h3 style={{ borderColor: time.cor }}>{time.nome}</h3>
<div className='colaboradores'>
{colaboradores.map((colaborador, indice) => {
return (<Colaborador key={indice} colaborador={colaborador} corDeFundo={time.cor} aoDeletar={aoDeletar}
/>)
})}
</div>
</section>
)
}
export default Time
App.js (apaguei alguns colaboradores de inicial, para caber no máx de caracteres aqui):
import { useState } from 'react';
import Banner from './componentes/Banner';
import Formulario from './componentes/Formulario';
import Time from './componentes/Time';
import Rodape from './componentes/Rodape';
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: '#DB6EBF'
},
{
id: uuidv4(),
nome: 'Mobile',
cor: '#FFBA05'
},
{
id: uuidv4(),
nome: 'Inovação e Gestão',
cor: '#FF8A29'
},
])
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 cadastrarTime({ nome, cor }) {
// setTimes([...times, { nome, cor, id: uuidv4() }])
// }
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
}))
}
return (
<div className="App">
<Banner />
<Formulario times={times.map(time => time.nome)} aoColaboradorCadastrado={colaborador => setColaboradores([...colaboradores, colaborador])} />
<section className="times">
<h1>Minha organização</h1>
{times.map((time, indice) =>
<Time
mudarCor={mudarCorDoTime}
key={indice}
time={time}
colaboradores={
colaboradores.filter(colaborador => colaborador.time === time.nome)}
aoDeletar={deletarColaborador}
/>)}
</section>
<Rodape />
</div>
);
}
export default App;