在我的React应用程序中,我正在初始化我的firebase对象,在它自己的文件中有它的db引用,然后在稍后使用更高阶的组件导出:
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;
写入数据库是没有问题的,但当我试图读取数据并对初始化的数据库引用调用.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