我对React和Firebase的使用相当新。现在我有一个Firebase.js文件,我存储并导出了我的所有函数和consts。这就是它的样子:
export const auth = firebase.auth();
export function performLogin(email, password) {
auth.signInWithEmailAndPassword(email, password).then(function(data) {
//Works
}).catch(function(error) {
//Does not work
});
}
所以,我有这个login.js,我正在调用performLogin,我想知道最好的方法是什么?如何创建回调,或者至少读取任何类型的返回消息?这就是我调用performLogin的方式:
clickLogin(e){
e.preventDefault();
performLogin(this.state.email, this.state.password);
}
这是有效的,因为控制台输出告诉我登录是否成功。但是,我希望能够使用此功能来检索登录状态,然后确定是否应该提示错误消息或将用户推送到管理仪表板。我该怎么做?
是否可以像这样调用performLogin?
performLogin(this.state.email,this.state.password,(callback)){
if (callback == true) { //Success } else { //Error }
}
答案 0 :(得分:4)
您的performLogin函数可以采用第三个参数,一个回调函数,它存在于clickLogin()
方法所在的位置:
export function performLogin(email, password, callback) {
auth.signInWithEmailAndPassword(email, password).then(function(data) {
//Works
callback(data);
}).catch(function(error) {
//Does not work
callback({ error });
});
}
loginResult(result) {
if(result.error) {
//failed
} else {
//logged in
}
}
clickLogin(e){
e.preventDefault();
performLogin(this.state.email, this.state.password, this.loginResult);
}
或者您可以返回signInWithEmailAndPassword()
返回并在组件中处理它的承诺。
export function performLogin(email, password) {
return auth.signInWithEmailAndPassword(email, password);
}
clickLogin(e){
e.preventDefault();
performLogin(this.state.email, this.state.password)
.then(result => //logged in)
.catch(error => //failed)
};