【发布时间】:2022-01-03 10:07:06
【问题描述】:
我正在尝试执行一个函数来更新 setState,但它也需要先加载其他状态。
const [chatsIds, setChatsIds] = useState([]);
const [chats, setChats] = useState([]);
useEffect(() => {
getChatsIds();
}, []);
useEffect(() => {
getChats();
}, [chats]);
“getChats”需要来自“chatsIds”的值,但是当屏幕加载时,值不是,只有当我再次重新加载应用程序时它才会获得值。
这里是函数:
const getChatsIds = async () => {
const ids = await getDoc(userRef, "chats");
setChatsIds(ids);
}
const getChats = async () => {
const chatsArr = [];
chatsIds.forEach(async (id) => {
const chat = await getDoc(doc(db, "Chats", id));
chatsArr.push(chat);
console.log(chatsArr);
});
setChats(chatsArr);
}
我已经尝试使用 useEffect 和 useLayoutEffect 钩子,以及 promises 和 async 函数,但我没有发现我做错了什么:(
【问题讨论】:
标签: javascript reactjs google-cloud-firestore async-await react-hooks