【发布时间】:2021-05-15 09:22:50
【问题描述】:
您好,我正在使用 firebase 和 react 钩子, 我看到我的状态变旧或未更新函数内部的变量(guests / foreUpdate)的问题
//table that update the data
onRowUpdate: (newData, oldData) =>
new Promise((resolve, reject) => {
setTimeout(() => {
//the upodated values are here
setGuests([...dataUpdate]);
foreUpdate=false;
firebase.database().ref().update(updates);
resolve();
}, 500);
}),
没有更新的代码是:
const changeDbChangesEvents = () => {
commentsRef.on("child_changed", (data) => {
if (guests && foreUpdate) { // 2 values arent updated. foreUpdate - is simple varibale not state
const cloneGuests = _.cloneDeep(guests);
setGuests(cloneGuests);
}
foreUpdate=true;
});
【问题讨论】:
-
您能否检查
onRowUpdate函数是否按预期工作。另外,你能告诉更多关于setGuests([...dataUpdate])的信息吗?这里的dataUpdate到底是什么?是否依赖于之前的状态?
标签: reactjs firebase firebase-realtime-database react-hooks