您好,正在使用 firebase 和 react hooks, 我看到我在函数内部变旧或未更新变量(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;
});
答案 0 :(得分:0)
看起来您正在使用旧状态,因为您一个接一个地执行代码。尝试将您的数据库更改代码放入 useEffect
中,如下所示:
useEffect(() => {
firebase.database().ref().update(updates);
}, [updates]);
这可确保您仅使用最新值运行更新。