【发布时间】:2021-03-16 13:42:59
【问题描述】:
我正在从Firebase 获取数据并想更新state:
const [allProfile, setAllProfile] = useState([]);
.....
const displayProfileList = async () => {
try {
await profile
.get()
.then(querySnapshot => {
querySnapshot.docs.map(doc => {
const documentId = doc.id;
const nProfile = { id: documentId, doc: doc.data()}
console.log(nProfile);//nProfile contains data
setAllProfile([...allProfile, nProfile]);
console.log(allProfile); // is empty
}
);
})
} catch (error) {
console.log('xxx', error);
}
}
【问题讨论】:
-
状态是异步更新的。在组件的特定渲染中,状态和道具是恒定的。要查看更新的状态,组件必须重新渲染。使用
useEffect挂钩记录更新的状态值。 -
与您的问题无关,但您不应将
async-await语法与promise-chaining混合使用。使用其中之一,但不能同时使用。
标签: reactjs react-native react-hooks state use-state