如何从ReactJS的辅助函数中正确访问'promise'值

时间:2019-06-23 15:36:18

标签: javascript reactjs

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方法来解决此问题?

0 个答案:

没有答案