我正在尝试在我的react-native项目中使用firebase进行用户登录/注销过程。当我单击该按钮时,将执行firebase.auth()。SignInWithEmailAndPassword函数,但会给出错误消息,提示“ c.call不是函数”,这是在auth.js中发生的。
我找不到与该错误有关的任何答案。
[错误的屏幕截图](https://ibb.co/TPQCFZr)
onButtonClick() {
const { email, password } = this.state;
this.setState({ error: '', loading: true });
firebase.auth().signInWithEmailAndPassword(email, password)
.then(this.onLoginSuccess.bind(this))
.catch(
firebase.auth().createUserWithEmailAndPassword(email, password)
.then(this.onCreateSuccess.bind(this))
.catch(this.onLoginFail.bind(this))
);
}
答案 0 :(得分:0)
我不知道本机响应,但是问题可能出在您没有将回调函数传递给then()
方法的事实。
尝试以下操作:
onButtonClick() {
const { email, password } = this.state;
this.setState({ error: '', loading: true });
firebase.auth().signInWithEmailAndPassword(email, password)
.then(userCredential => this.onLoginSuccess.bind(this))
.catch(err => {
//err
});
}
请参阅then()
方法here的文档,该文档说明:
then()方法返回一个Promise。它最多需要两个参数: 回调函数,用于Promise的成功和失败案例。
,并且失败案例的回调函数是可选的。
实际上,您正在使用catch()
方法执行相同的操作。参见文档here。
最后,请注意,您不应以相同的方式处理signInWithEmailAndPassword()
方法中的所有错误。发生此错误的情况有不同的情况:密码错误,找不到用户等。请参见https://firebase.google.com/docs/reference/js/firebase.auth.Auth.html#signinwithemailandpassword
答案 1 :(得分:0)
您应该使用async / await和
还可以使用try ... catch构造处理所有可抛物。
示例代码:
{Binding MyClass?.Accepted, ...