Мне все еще нужно использовать async / await в блоке then в React - PullRequest
0 голосов
/ 01 августа 2020

Итак, у меня есть этот блок, если я не использую async / await, он не будет работать. Мой вопрос в том, что я знаю, что setState является асинхронным, но разве блок then не проверяет сначала setWow fini sh, прежде чем перейти к части console.log? Спасибо!

      const [wow, setWow]=useState(null);  
      submitForm(payload)
      .then(async() => await setWow("djflajdlk"))// if I don't use async/await, it will not work
      .then(() => console.log(wow))
      .catch(err => alert(err.message))
  }

1 Ответ

2 голосов
/ 01 августа 2020

setWow действительно asyn c, но он не возвращает обещание, поэтому вы не можете await его.

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

useEffect(() => {
   // wow has changed, do something with wow
   console.log(wow)
}, [wow])
...