我很反应和反应原生世界。我创建了一个新的应用程序,它使用具有登录屏幕的firebase,用户可以注册电子邮件和密码。我想检查用户是否已经注册并相应地重定向到另一个屏幕,作为我使用构造函数和onAuthStateChanged的第一步,我想设置一个状态。但我总是得到功能没有定义,任何人都可以帮助我。
constructor(props) {
super(props);
firebase.initializeApp(FireBaseConfig);
this.state = {
currentUser: null,
emailAddress: '',
password: '',
loginError: {
show: false,
message: "Unknown error"
}
}
this.saveCurrentUser = this.saveCurrentUser.bind(this);
this.doLogin = this.doLogin.bind(this);
firebase.auth().onAuthStateChanged(function (user) {
saveCurrentUser(user);
});
}
saveCurrentUser(user) {
this.setState({
currentUser: user
});
}
由于
答案 0 :(得分:2)
saveCurrentUser
确实没有定义。您可以在this
关键字下访问它,该关键字是您班级的参考。
但是因为你在firebase调用上使用常规函数回调,所以你必须先引用它。这就是我添加的原因
var saveCurrentUser = this.saveCurrentUser
constructor(props) {
super(props);
firebase.initializeApp(FireBaseConfig);
this.state = {
currentUser: null,
emailAddress: '',
password: '',
loginError: {
show: false,
message: "Unknown error"
}
}
this.saveCurrentUser = this.saveCurrentUser.bind(this);
this.doLogin = this.doLogin.bind(this);
var saveCurrentUser = this.saveCurrentUser
firebase.auth().onAuthStateChanged(function (user) {
saveCurrentUser(user);
});
}
saveCurrentUser(user) {
this.setState({
currentUser: user
});
}
您可以使用箭头功能,因此var
声明将变得不必要。