React应用程序中的几个主要组件使用功能从Firebase数据库检索数据。
我将这些作为静态函数放在帮助器类中,例如:
class FirebaseRetrieveHelper extends Component {
... (other functions)
// Gets all PDE files, for all users
static getAllFromAllUsers = () => {
this.usersCollectionRef.get().then(querySnapshot => {
querySnapshot.forEach(doc => {
this.userCodeCollectionRef(doc.id).onSnapshot(querySnapshot => {
var items = querySnapshot.docs.map(function (documentSnapshot) {
data = documentSnapshot.data();
});
});
});
});
// I can't do this:
return data
}
}
我从另一个组件访问这些功能,如下所示:
class TAView extends Component {
constructor(props) {
super(props);
this.state = {
items: [],
....
}
}
componentWillMount() {
var items = FirebaseRetrieveHelper.getAllFromAllUsers();
}
...
从Firebase提取数据的工作方式,我需要使用一个.then()
函数,然后通常可以通过放入相应类的state
来检索其值,这就是答案关于React中的promise函数的许多类似问题。在这种情况下,这是行不通的,因为这是帮助程序类中的静态函数。
如何从.then()
函数访问响应?还是有更好的React-y方法来解决此问题?