Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 导出的Firebase.ref()对象是否没有.on()方法?_Javascript_Reactjs_Firebase_Firebase Realtime Database - Fatal编程技术网

Javascript 导出的Firebase.ref()对象是否没有.on()方法?

Javascript 导出的Firebase.ref()对象是否没有.on()方法?,javascript,reactjs,firebase,firebase-realtime-database,Javascript,Reactjs,Firebase,Firebase Realtime Database,在我的React应用程序中,我正在使用firebase对象自身文件中的db引用初始化firebase对象,然后使用更高阶的组件将其导出: class Firebase { constructor() { app.initializeApp(firebaseConfig); this.auth = app.auth(); this.db = app.database(); console.log(this.auth) } . . . user

在我的React应用程序中,我正在使用firebase对象自身文件中的db引用初始化firebase对象,然后使用更高阶的组件将其导出:

class Firebase {
  constructor() {
    app.initializeApp(firebaseConfig);

    this.auth = app.auth();
    this.db = app.database();
    console.log(this.auth)
  }

 .
 .
 .

 user = uid => this.db.ref(`user/${uid}`);

 users = () => this.db.ref('users');

 project = pid => this.db.ref(`project/${pid}`);

 projects = () => this.db.ref('projects');
}

export default Firebase;
写入数据库没有问题,但是当我尝试读取数据并在初始化的db REF上调用.on()时,我发现它们不是函数

const ProjectPage = props => {
    const ref = props.firebase.project;
    ref.on("value", snap => {
        console.log(snap);
    })
    return (
        .....
    )
}

export default withFirebase(ProjectPage);
真正让我困惑的是,如果我在组件中初始化一个ref,它是否有正确的方法:

    const ref = props.firebase.db.ref('thisworksfine');
    ref.on("value", snap => {
        console.log(snap);
    })
这是我第一次在这里提问,但我被这个问题难住了。为什么在初始化时在组件文件中附加正确的方法,而不是在单独的文件中附加正确的方法,当然它们引用的是完全相同类型的对象


非常感谢您的帮助,谢谢您的阅读。

您的数据库引用是函数,因此您应该像这样调用它们:

const ref = props.firebase.project();
现在您可以访问ref属性和方法

这只是对实际函数的引用,而不是该函数中返回的值:


您的数据库引用是函数,因此您应该像这样调用它们:

const ref = props.firebase.project();
现在您可以访问ref属性和方法

这只是对实际函数的引用,而不是该函数中返回的值:


非常感谢你,哈哈。。。我有一种感觉,这很简单,但我就是看不出来。谢谢你,哈哈。。。我有一种感觉,就是这么简单,但我就是看不出来