我正在使用React,并通过File >> project structure >> Gradle version
方法从Firestore数据库中获取数据。我有两个componentDidMount()
调用,一个用于从数据库获得数据并且可以保存时的调用,另一个用于调整状态。
then()
但是,当我运行站点时,如果我不希望在保存数据库数据之后不执行此操作,它将首先尝试设置状态(第二条 componentDidMount() {
db.collection("myCollection")
.get()
.then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
// doc.data() is never undefined for query doc snapshots
console.log(doc.id, " => ", doc.data().field1);
allData.push(doc.data());
})
})
.then(
console.log("Setting State"),
this.setState({
isLoaded: true,
items: allData
}))
.catch(function(error) {
console.log("Error getting documents: ", error);
});
}
语句)。我不确定在保存数据库数据后如何强制执行状态更改。
我尝试过的事情:
1)将状态更改直接放在功能代码之后的第一个then()中。这给出了错误:
获取文档时出错:TypeError:无法读取未定义的属性“ setState”
答案 0 :(得分:1)
您已经忘记将设置状态和控制台日志包装到另一个功能中。否则,您要传递两个参数,一个是console.log的结果,另一个是this.setState的结果。这些是您编写时的同步调用。