Значение watch() в форме React Hook не обновляется достаточно быстро перед вызовом API внутри useEffectJavascript

Форум по Javascript
Anonymous
Значение watch() в форме React Hook не обновляется достаточно быстро перед вызовом API внутри useEffect

Сообщение Anonymous »

Я использую форму React Hook с функциями watch() и setValue() внутри useEffect, и у меня возникла проблема с синхронизацией.
Вот упрощенная версия моего кода:

Код: Выделить всё

const isSecret = watch("isSecret");

React.useEffect(() => {
if (!isIdentifierValid(identifier)) {
setValue("isSecret", false);
return;
}

void (async () => {
const body = await dispatch(getIdentifierExists({ identifier })).unwrap();

if (body.isSecret!= null) {
setValue("isSecret", !!body.isSecret);
}

await trigger("identifier");

if (!template || !isValid) return;

// PROBLEM: `isSecret` here is still the old value (not updated yet)
const { previewLcd } = await dispatch(
getIdentifierFolderPreview({
identifier,
template,
isSecret, //  сразу в пределах того же цикла рендеринга.

[h4]Чего я хочу[/h4]
Чистый способ:
Установить поле ([code]setValue
) внутри эффекта,
Затем используйте обновленное значение сразу после этого в асинхронном вызове —
без добавления другого useEffect или произвольных таймаутов.

Вопрос

Как правильно обеспечить доступность нового значения из setValue() перед его использованием в том же эффекте?

Подробнее здесь: https://stackoverflow.com/questions/797 ... call-insid

Вернуться в «Javascript»