【发布时间】:2020-09-24 18:05:41
【问题描述】:
我想在文本组件中显示文本而不是控制台记录它。我已经在一个函数中获得了信息,现在它只是控制台记录它。我想从函数中获取信息并将其放入状态中,然后通过从状态中抓取来显示。
state = {
displayName: firebase.auth().currentUser.displayName,
email: firebase.auth().currentUser.email,
familyName: this.getFamilyName(),
};
getFamilyName() {
return firebase
.firestore()
.collection("users")
.doc(firebase.auth().currentUser.email)
.get()
.then(function (doc) {
if (doc.exists) {
console.log(doc.data().familyname);
return doc.data().familyname;
} else {
// doc.data() will be undefined in this case
console.log("No such document!");
}
})
.catch(function (error) {
console.log("Error getting document:", error);
});
}
render() {
return (
<ScrollView>
<View>
<ThemeProvider>
<Text style={{ textAlign: "center", top: 20, fontSize: 14 }}>
FAMILIE
</Text>
<Text h2 style={{ textAlign: "center", top: 20 }}>
{this.state.familyName}
</Text>
更新。看起来它不会转移到状态。当我控制台记录状态时,它说未定义。:
state = {
displayName: firebase.auth().currentUser.displayName,
email: firebase.auth().currentUser.email,
familyName: this.getFamilyName(),
};
getFamilyName() {
return firebase
.firestore()
.collection("users")
.doc(firebase.auth().currentUser.email)
.get()
.then(function (doc) {
if (doc.exists) {
console.log("1st" + doc.data().familyname);
const name = doc.data().familyname;
this.setState({ familyName: name });
} else {
// doc.data() will be undefined in this case
console.log("No such document!");
}
})
.catch(function (error) {
console.log("Error getting document:", error);
});
}
render() {
console.log("2nd" + this.state.familyName);
return (
<ScrollView>
<View>
<ThemeProvider>
<View>
<Text style={{ textAlign: "center", top: 20, fontSize: 14 }}>
FAMILIE
</Text>
<Text h2 style={{ textAlign: "center", top: 20 }}>
{this.state.familyName}
</Text>
</View>
输出
2ndundefined
1stVilholm
Error getting document: [TypeError: undefined is not an object (evaluating 'this.setState')]
【问题讨论】:
标签: reactjs firebase react-native google-cloud-firestore