【发布时间】:2017-12-09 20:10:28
【问题描述】:
我知道问题可能出在主登录功能中的功能上,但我无法抓住它。它返回此错误:
Unhandled Rejection (TypeError): undefined is not an object (evalating 'this.setState')
export default class Main extends React.Component{
constructor(){
super()
this.state = {
logged: null,
name: "Felicia"
};
}
login(e){
const email = document.getElementById('txtEmail').value;
const password = document.getElementById('txtPass').value;
firebase.auth().signInWithEmailAndPassword(email, password);
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
console.log("There is a user logged");
console.log(user.email);
this.setState({ name: firebase.auth.currentUser.displayName, logged: "true" })
} else {
console.log("No user Logged");
}
}).bind(this)
render(){
if(this.state.logged){
return <Student name={this.state.name} />
} else {
return (
<div className="container">
<div className="row">
<div className="col-md-6 loginform">
<input type="email" id="txtEmail" className="form-control" placeholder="email@email.co.uk" />
<small id="emailHelp" className="form-text text-muted">Well never share your email with anyone else.</small>
<input type="password" id="txtPass" className="form-control" placeholder="password"/>
<button onClick={this.login} className="btn btn-primary">Login</button>
</div>
</div>
</div>
)
}
}
}
你能帮我解决这个问题吗?
【问题讨论】:
-
您是否尝试检查
firebase.auth.currentUser是否可用? -
代码中什么时候调用函数login()?
-
@Jay 如果 currentUser = null 则返回一个带有 onClick 函数的按钮
-
@Umesh 我尝试过使用
if(firebase.auth.currentUser != null){ this.setState...},但它返回了同样的错误。 -
@PRvn 做一个console.log 并检查firebase.auth.currentUser.displayName 的值是什么,也请分享你调用函数的sn-p
标签: reactjs firebase authorization