对于React和Firebase的使用,我还是个新手。现在,我有一个Firebase.js文件,其中存储并导出了我所有的函数和常量。它看起来是这样的:
export const auth = firebase.auth();
export function performLogin(email, password) {
auth.signInWithEmailAndPassword(email, password).then(function(data) {
//Works
}).catch(function(error) {
//Does not work
});
}所以,我有一个调用performLogin的login.js,我想知道做这件事的最佳方式是什么?如何创建回调,或者至少读取任何类型的返回消息?我是这样调用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 }
}发布于 2018-02-10 09:52:30
您的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()返回的promise并在组件中处理它。
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)
};https://stackoverflow.com/questions/48716452
复制相似问题