• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

172
Views
Cómo alternar un elemento de matriz en React State

Estoy tratando de implementar una función de filtro simple en React. Tengo 6 botones y cada botón tiene un valor. Un botón puede estar seleccionado o no seleccionado. Solo necesito obtener todos los valores seleccionados. Mi idea era escribir el valor en una matriz cuando se hace clic en un botón. Cuando se hace clic en el botón por segunda vez, el elemento se elimina de la matriz. Probé una función que obtiene la matriz y el elemento que se alternará. Comprueba si la matriz ya tiene el elemento. Si es así, entonces usa un filtro para eliminarlo. Si no, usa el operador de propagación para crear una nueva matriz que contiene los valores de la matriz proporcionada más el nuevo elemento. Mi componente y la función se ve así:

 export default class App extends Component { constructor(props) { super(props); this.handleChangeCompetitor = this.handleChangeCompetitor.bind(this); this.state = { competitors: [], }; } handleChangeCompetitor(filterCompetitors) { this.setState(state => { const competitors = state.competitors.includes(filterCompetitors) ? competitors.filter(i => i !== filterCompetitors)//remove items : [ ...competitors, filterCompetitors ]; // add item return { competitors, }; }); } }

El problema es que no funciona y tengo este error:

 Uncaught TypeError: undefined is not iterable (cannot read property Symbol(Symbol.iterator))

¿Alguien tiene una idea de por qué no funciona o si el enfoque tiene algún sentido?

over 3 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Tu puedes hacer:

 handleChangeCompetitor(filterCompetitors) { this.setState((state) => ({ competitors: state.competitors.includes(filterCompetitors) ? state.competitors.filter((fc) => fc !== filterCompetitors) : [...state.competitors, filterCompetitors], })) }
over 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error