Как реализовать данные из входных данных в массив объектов в react

#javascript #reactjs #use-context

#язык JavaScript #реагирует на #использование-контекст

Вопрос:

У меня есть два компонента, первый используется для получения данных из формы, второй используется для сохранения собранных данных. Есть rideData объект, в AddRideForm.js котором я храню данные из входных данных. Я хочу отправить этот объект в rides-context файл и вставить его сюда const [rides, setRides] = useState . Не могли бы вы, пожалуйста, сказать мне, почему в useState (), упомянутом выше, нет собранных данных после того, как я распечатал их в консоли ?

AddRideForm.js

 const AddRideForm2 = () =gt; {  const [userInput, setUserInput] = useState({  name: "",  hour: "",  });  const ctx = useContext(RidesContext);   const nameHandler = (e) =gt; {  setUserInput((prevState) =gt; {  return { ...prevState, name: e.target.value };  });  };  const hourHandler = (e) =gt; {  setUserInput((prevState) =gt; {  return { ...prevState, hour: e.target.value };  });  };   const submitHandler = (e) =gt; {  e.preventDefault();  const rideData = {  name: userInput.name,  hour: userInput.hour,  };   ctx.onAdd(rideData);  console.log(userInput);  console.log(ctx.ridesList);  console.log(ctx.onAdd);  };   return (  lt;RidesContextProvidergt;  lt;form className={classes.addRideFormContainer} onSubmit={submitHandler}gt;  lt;Input  className={classes.addRideFormInput}  value={userInput.name}  onChange={nameHandler}  gt;lt;/Inputgt;  lt;Input  className={classes.addRideFormInput}  value={userInput.hour}  onChange={hourHandler}  gt;lt;/Inputgt;  lt;button className={classes.addRideFormButton}gt;Dodajlt;/buttongt;  lt;/formgt;  lt;/RidesContextProvidergt;  ); };  export default AddRideForm2;   

rides-context.js

 const RidesContext = React.createContext({  ridesList: {},  onAdd: (data) =gt; {},  onDelete: () =gt; {}, });  export const RidesContextProvider = (props) =gt; {  const [rides, setRides] = useState([  {  hour: "12:00",  name: "Jan",  },  {  hour: "12:00",  name: "Bartek ",  },  {  hour: "12:00",  name: "Kamil",  },  ]);   const addRideHandler = (data) =gt; {  setRides(data);  };   return (  lt;RidesContext.Provider  value={{  ridesList: rides,  onAdd: addRideHandler,  }}  gt;  {props.children}  lt;/RidesContext.Providergt;  ); };  export default RidesContext;  

Комментарии:

1. Пожалуйста, отредактируйте вопрос, чтобы уточнить, что происходит (или чего не происходит), что вы хотите изменить.

2. В чем собственно проблема

3. Я только что прояснил это

4. Хорошо, итак, консоль. войдите в систему AddRideForm.js то, что вы показали, сообщает о том, чего вы ожидаете. Вы должны добавить ведение addRideHandler журнала, чтобы показать, что data это то, что вы ожидаете. Во-первых, я вижу, что rides это массив, но вы передаете объект вместо массива объектов.