Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

211
Vistas
Cómo pasar una matriz filtrada manteniendo el original sin cambios (ReactJS)

Actualmente estoy trabajando en una aplicación de lista de tareas y estoy tratando de implementar una función en la que los usuarios puedan filtrar las tareas en función de su estado de finalización (todas, completadas o incompletas). Estoy tratando de usar la función de filtro de javascript.'

He intentado usar una matriz duplicada, por lo tanto, conservando los valores originales y manipulando la matriz duplicada. Sin embargo, no pude actualizar la matriz original a medida que aumenta la lista, así que decidí descartarla.

Hay mucho código en mi proyecto, pero solo copiaré los relevantes para la pregunta.

 const Body = () => { let tasks = [ { task: 'Walk the dog', completed: false, id: Math.round(Math.random() * 100000), }, { task: 'Learn ReactJS', completed: false, id: Math.round(Math.random() * 100000), }, ]; const [task, setTask] = useState(tasks); const addTask = () => { let input = document.getElementById('task-field'); let randomID = Math.round(Math.random() * 100000); if (input != null) { setTask([...task, { task: input.value, completed: false, id: randomID }]); } }; return ( <div className='body'> <Header></Header> <Input setMethod={set} inputMethod={addTask}></Input> <Tasks tasks={task} display={display} removeMethod={complete}></Tasks> </div> ); }; export default Body;
 const Tasks=({tasks, display, removeMethod,})=> { const [task,setTask] = useState(tasks) const [display,setDIsplay] = useState(tasks) const filterFunction=(event)=> { let filtered; const target = event.target; switch(target.innerHTML) { case('All'): filtered = task break; case('Active'): filtered = task.filter(()=> { return !task.completed }) break; case('Completed'): filtered = task.filter(()=> { return task.completed }) setDisplay(filtered) } } return( <div className="tasks"> {display.map(el=> { return ( <TaskComponent task={el} removeMethod = {removeMethod} key = {el.id}></TaskComponent> ) })} <Footer method = {filterFunction} ></Footer> </div> ) } export default Tasks;

entonces la pregunta es, ¿cómo implemento esta característica en ReactJS?

como referencia, estoy vinculando la opinión de un compañero codificador sobre el mismo proyecto: https://nasratt.github.io/frontendMentorSolutions/projects/todoList/

gracias de antemano por la ayuda.

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda