Доступ к состоянию внутри функции, которая используется для установки состояния - PullRequest
0 голосов
/ 19 апреля 2020

Я хотел получить доступ к обновленному значению состояния внутри функции, которую я использовал для обновления состояния.

const [test , setTest] = useState("old val");

const run = () => {
    setTest("new val");
    console.log(test);
}

это дает мне старое значение теста, т.е. "старый вал". Как получить доступ к новому значению val, установленному для установки внутри функции run.

Я прошел через несколько вопросов StackOverflow для этого. Везде я нашел одно общее решение, которое выполняло следующее:

setTest("new val" , () => {
 console.log(test);
})

Но когда я это сделал, я не получил желаемого результата, а вместо этого получил предупреждение, в котором говорилось useState() hooks do not take the second parameter callback arg.

Кто-нибудь может мне помочь с этим?

1 Ответ

1 голос
/ 19 апреля 2020

Вы столкнулись с этой проблемой, потому что useState ловушка является асинхронной. Для этого есть 2 решения: Использовать async / await

const run = async () => {
    await setTest("new val");
    console.log(test);
}

Вы также можете использовать хук useEffect для доступа к последнему обновлению состояния, я рекомендую использовать этот подход для запуска вашего действия при изменении значения теста .

useEffect(() => {
  console.log(test);
  // Do whatever you want with the new value here
}, [test]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...