• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

161
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 3 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda