I'm new to React Native and I don't know if you can use componentDidUpdate this way. What I'm trying to do is call getRiderRequestDetails() within componentDidUpdate to retrieve data from Firebase anytime a new request is made. And I get an infinite loop. How can I avoid that?
componentDidUpdate(prevState) {
getRiderRequestDetails();
}
getRiderRequestDetails = () => {
AsyncStorage.getItem("driverId")
.then((result) =>
firebase
.database()
.ref("Ride_Request/" + result)
.once("value")
.then(function (snapshot) {
if (snapshot.exists()) {
DriverHomeContents.RiderID = snapshot.child("riderID").val();
DriverHomeContents.RiderPickUpName = snapshot
.child("pickUpName")
.val();
DriverHomeContents.RiderDropUpName = snapshot
.child("dropOffName")
.val();
}
})
.then(
() => {
console.log(
"fine " +
DriverHomeContents.RiderDropUpName +
" " +
DriverHomeContents.RiderPickUpName
);
if (!DriverHomeContents.RiderID == "") {
this.setState({ isModalVisible: true });
}
firebase
.database()
.ref("RiderIds/" + DriverHomeContents.RiderID + "/Details")
.once("value")
.then(function (snapshot) {
DriverHomeContents.Firstname = snapshot
.child("firstname")
.val();
DriverHomeContents.Lastname = snapshot
.child("lastname")
.val();
})
.then(
() => {
console.log("fine" + DriverHomeContents.Firstname);
},
(error) => {
}
);
},
(error) => {
console.error("error" + error);
}
)
)
.catch((e) => console.log("err", e));
};