#javascript #reactjs #forms
#javascript #reactjs #формы
Вопрос:
У меня есть модальный файл, который содержит форму. Всякий раз, когда я отправляю данные через него и регистрирую их в консоли, это никогда не работает с первого раза. Во второй раз, когда я отправляю данные через него, журнал консоли предыдущей записи. Может кто-нибудь определить, могу ли я что-нибудь пропустить?
const handleSubmit = (event) => {
event.preventDefault();
setOpen(false);
setSubmission({
ref: event.target[0].value,
brand: event.target[1].value,
iname: event.target[2].value,
gtin: event.target[3].value,
qty: 0,
});
console.log(submission);
};
Комментарии:
1. Это связано с тем, что состояние обновляется асинхронно. Вы не получите обновленные значения немедленно
Ответ №1:
Ну, вот как работают перехваты, к тому времени, когда вы console.log(submission)
, состояние еще не изменилось.
Это связано с тем, что когда вы вызываете setSubmission(), он сообщает react, что вы хотите обновить состояние, и помещает его в очередь.
Если вы хотите зафиксировать изменение состояния, используйте useEffect()
перехват
useEffect(() => {
console.log(submission); // this hook captures the state change and this will have the correct value
}, [submission]); // think of this as a dependency variable that `useEffect` will listen for changes.
Комментарии:
1. Спасибо за ваш отличный ответ!