Así que estoy tratando de establecer InputFields en una variable que contiene una matriz de objetos. El problema es que la matriz de objetos se crea en un bucle for
const [inputFields, setInputFields] = useState([]) var inputs =[]; for(var i =0; i<exerciseNames.length; i++) { inputs.push({id: currWorkoutVolumeId[i], exercise: currExerciseNames[i], sets: sets[i], reps: reps[i], weight: weight[i]}) } console.log(inputs) console.log(inputFields)Donde cada valor en el objeto es una matriz. Cuando ingreso console.log obtengo lo que quiero:
(2) [{…}, {…}] 0: {id: 9898, exercise: 'Squats', sets: 9898, reps: 3, weight: 3} 1: {id: 33311, exercise: 'Bench Press', sets: 33311, reps: 2, weight:2} length: 2 [[Prototype]]: Array(0)Pero cuando quiero establecer el estado en entradas var, obtengo una matriz vacía. ¿Cómo puedo configurar el estado, porque en mi caso estoy obteniendo de la base de datos y en un caso puedo tener 10 objetos (de nombre de ejercicio. longitud) y los otros 100 objetos? ¡Gracias por adelantado!
Obtenga los datos de la base de datos de forma asíncrona y agréguelos al estado almacenado actualmente de la siguiente manera.
const [inputFields, setInputFields] = useState([]); setInputFields((currentInputFields) => { let inputs = []; for (let i = 0; i < exerciseNames.length; i++) { inputs.push({ id: currWorkoutVolumeId[i], exercise: currExerciseNames[i], sets: sets[i], reps: reps[i], weight: weight[i], }); } console.log(inputs); return [...currentInputFields, ...inputs]; }); console.log(inputFields);