useState
так же, как его аналог setState
возвращает асинхронную функцию для установки состояния. Так что регистрация снов чуть ниже setDreams
звонка не даст вам никаких результатов. Вместо этого вы можете войти внутрь за пределами useEffect
, чтобы увидеть состояние.
Но setDreams
асинхронность имеет еще один недостаток в вашем случае, цикл не устанавливает dreams
достаточно быстро, чтобы вы могли его распространять, вы можете потерять обновления между ними, вы можете исправить это, используя функционал setDreams
.
setDreams(prevDreams => [...prevDreams, doc.doc.data()])
Или, что еще лучше, вы можете сохранить все свои данные и установить состояние в самом конце.
const newDreamsState = newDreams.map(
return doc.doc.data();
});
setDreams(newDreamsState);