我是 React Native 的新手,我不知道您是否可以通过这种方式使用 componentDidUpdate。我想要做的是在 componentDidUpdate 中调用 getRiderRequestDetails() 以在发出新请求时从 Firebase 检索数据。我得到一个无限循环。我怎样才能避免这种情况?
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));
};