从变量和状态中获取旧值

时间:2021-05-15 09:22:50

标签: reactjs firebase firebase-realtime-database react-hooks

您好,正在使用 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;
        });

1 个答案:

答案 0 :(得分:0)

看起来您正在使用旧状态,因为您一个接一个地执行代码。尝试将您的数据库更改代码放入 useEffect 中,如下所示:

useEffect(() => {
  firebase.database().ref().update(updates);
}, [updates]);

这可确保您仅使用最新值运行更新。