import { Component } from "react";
import * as firebase from "firebase";
export class ProfileScreen extends Component {
static navigationOptions = {
title: "Profile",
};
state = {
email: "",
FirstName: "",
LastName: "",
MobileNo: "",
};
componentDidMount() {
var firebaseConfig = {
apiKey: "",
authDomain: "",
databaseURL: "",
projectId: "",
storageBucket: "",
messagingSenderId: "",
appId: "",
measurementId: "",
};
if (!firebase.apps.length) {
firebase.initializeApp(firebaseConfig);
}
let newPost;
var id = "OEfxVtMSnLNtvmX8Sv1qgnoHwLX2";
firebase
.database()
.ref("/Admin/" + id)
.once("value", (snapshot) => {
newPost = snapshot.val();
});
setTimeout(() => {
this.setState({
FirstName: newPost.FirstName,
LastName: newPost.LastName,
MobileNo: newPost.MobileNo,
});
if (newPost.Gender == "Male") {
this.MchangeCol();
} else {
this.FchangeCol();
}
}, 2000);
}
}
Данные извлекаются, но слишком поздно, и this.setState
выполняется, поскольку в переменной newPost нет данных и отображается ошибка, поэтому я использовал setTimeout
в течение 10 секунд, а затем данные назначаются правильно.
Как я могу устранить этот setTimeout
метод и синхронизировать c данные? Пожалуйста, помогите!