Я использую React Hooks и создаю страницу, на которой пользователи могут вносить изменения в свою учетную запись и сохранять ее. Когда страница загружается, я хочу, чтобы кнопка была отключена, потому что на странице будет отображаться ранее сохраненная информация, и нет необходимости сохранять, поскольку не было сделано никаких изменений. Как только пользователь вносит изменения, у меня появляется функция validate (), которая проверяет, действительны ли внесенные им изменения. Если они есть, то кнопка должна быть активирована. Когда пользователь нажимает кнопку «Сохранить», она должна быть отключена и должно отображаться «Сохранение». После завершения сохранения кнопка все еще должна быть отключена и должна отображаться «Сохранено».
У меня есть 3 переменных состояния, которые инициализированы таким образом (сначала disableButton истинно, потому что кнопка отключена при переходе на страницу).
const [saved, setSaved] = useState(false);
const [isSubmitting, setSubmitting] = useState(false);
const [disableButton, setDisableButton] = useState(true);
Я использовал setState, когда происходят определенные события, например, когда пользователь нажимает кнопку сохранения:
const handleSubmit = async () => {
setSaved(false);
setSubmitting(true);
setDisableButton(true);
...
}
Я заметил, что эти изменения вносятся не сразу, а при следующем рендеринге, что для меня является проблемой. Я тоже посмотрел на useEffect, но не уверен, сработает ли он в моем случае (или, может быть, я просто не вижу закономерности). Я новичок в React, поэтому любая помощь будет принята с благодарностью.