我从react-native开始,并尝试使用onAuthStateChanged获取Firebase用户数据。
我尝试做bind
this
,但仍然对此一无所知。
这是我的构造函数
constructor(props) {
super(props);
this.state = {
isUid: '',
isProvider:'',
isPhoneNumber:'',
};
这是我在componentDidMount中的onAuthStateChange
componentDidMount() {
var user = firebase.auth().currentUser;
firebase.auth().onAuthStateChanged(function (user) {
if (user) {
user.providerData.forEach(function (profile) {
this.setState({isProvider: profile.providerId}, console.log(isProvider)).bind(this);
this.setState({isPhoneNumber: profile.phoneNumber}, console.log(isPhoneNumber)).bind(this);
this.setState({isUid: user.uid}, console.log(isUid)).bind(this);
});
} else {
console.log('no user');
}
}
答案 0 :(得分:0)
由于您处于onAuthStateChanged
回调中,因此this
的含义与其他含义不同。
最简单的解决方法是使用粗箭头符号,该符号保持this
的含义:
firebase.auth().onAuthStateChanged((user) => {
if (user) {
user.providerData.forEach(function (profile) {
this.setState({isProvider: profile.providerId}, console.log(isProvider)).bind(this);
this.setState({isPhoneNumber: profile.phoneNumber}, console.log(isPhoneNumber)).bind(this);
this.setState({isUid: user.uid}, console.log(isUid)).bind(this);
});
} else {
console.log('no user');
}
}