【发布时间】:2020-07-14 02:57:15
【问题描述】:
我使用 Google Firestore 作为 React Native 的后端。
我创建了一个类,我在其中存储有关 firestore 的所有内容(方法、信息等),并在该类中使用实时更新 (https://firebase.google.com/docs/firestore/query-data/listen):
class Fire{
constructor() {
this.user = {}; //is defined when the user log in
this.userDocument = null;
}
_getRealTimeData = () => {
const realTimeDatabaseRef = db.collection("users").doc(this.user.uid);
realTimeDatabaseRef.onSnapshot(doc => {
try {
if (doc.exists) {
this.userDocument = doc.data();
} else {
this.userDocument = null;
}
} catch (error) {
console.log(error);
this.userDocument = null;
}
});
};
}
Fire = new Fire();
export default Fire;
所以这工作正常,每当我更新我的 firestore 数据库时,我都会自动获取新值并将其存储在:
this.userDocument
问题是当这个值改变时 react-native 组件并没有更新,显然是因为该组件的状态没有更新。
所以我的问题是,如何通知我的组件 Fire 类中“this.userDocument”的值已更改?所以我可以通过 this.setState({userDocument: Fire.userDocument}) 更新状态。
注意:现在我只是从 componentDidMount() 中的“this.userDocument”获取数据:
import Fire, { db } from "../../Fire";
export default class Profile extends Component {
state={ userDocument:null }
componentDidMount(){
Fire._getRealTimeData()
this.setState({userDocument: Fire.userDocument})
}
render(){...whatever I render}
}
【问题讨论】:
-
你在哪里打电话
_getRealTimeData? -
抱歉忘记写了,现在正在编辑。在 componentDidMount()
标签: javascript firebase react-native google-cloud-firestore