Este es el esquema de mi modelo:
const workoutSchema = mongoose.Schema({ workouts: [ { workoutName: String, sets: Number, reps: Number, weight: Number, }, ], });Este es el postData que es referencia en el campo de texto a continuación.
const [postData, setPostData] = useState({ workouts: [{ workoutName: "", sets: "", reps: "", weight: "" }], }); para acceder al nombre de entrenamiento anterior, a continuación he establecido el valor en postData.workouts["workoutName"] parece funcionar pero no estoy seguro. Tengo problemas con la propiedad onChange , específicamente con el segundo argumento en setPostData [workoutName]: e.target.value . Tengo problemas para acceder a la workoutName de nombre de entrenamiento dentro del diccionario de entrenamientos del esquema.
<TextField label="Workout" variant="outlined" value={postData.workouts["workoutName"]} onChange={(e) => setPostData({ ...postData, workoutName: e.target.value }) } workouts["workoutName"]: e.target.value pero aparece un error de sintaxis antes del paréntesis que dice que estaba esperando un , . imagen de error También probé workouts.workoutName : e.target.value como en otros idiomas, pero no funcionó. ¿Cómo puedo acceder al nombre de entrenamiento en el objeto de entrenamientos para reasignarlo al valor escrito en el campo de texto (es decir, e.target.value ).
postData es un objeto
entrenamientos es una propiedad de este objeto
el nombre del entrenamiento es una propiedad dentro de una matriz que es una propiedad de los entrenamientos
Entonces, para cambiar el nombre del entrenamiento, debe hacer lo siguiente:
{...postData, workouts: [{...postData.workouts[0], workoutName: e.target.value}]}Para leer el nombre del entrenamiento necesitas hacer:
postData.workouts[0].name