我不确定如何撰写此问题,如果您需要更多信息,请与我们联系。
我正在建立一个在线商店网络应用程序。我正在使用Google的Firebase授权API对登录功能进行编码。
它正常登录: user.getToken()。然后功能,我可以在console.log中 displayName 就好了。如果它是一个静态网页,我也可以将它附加到DOM。
在react / webpack中,我想将 displayName 字符串设置为 usernameState 状态。它不起作用,当我在 user.getToken()。然后函数内运行this.setState时,它会触发一个错误,见下文。
我希望能够在网页/反应状态上使用该值。
constructor(){
super();
this.state = {
usernameState: ""
};
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
var displayName = user.displayName;
var email = user.email;
var emailVerified = user.emailVerified;
var photoURL = user.photoURL;
var uid = user.uid;
var providerData = user.providerData;
user.getToken().then(function(accessToken) {
console.log(displayName);
this.setState({
usernameState:JSON.stringify(displayName) //cannot read property 'setState' of undefined
});
});
} else {
// User is signed out.
console.log("signed out");
}
}, function(error) {
console.log(error);
});
};
答案 0 :(得分:1)
进行绑定或保存真实this
constructor(){
super();
this.state = {
usernameState: ""
};
const self=this;
...
self.setState(...)
...
}