【问题标题】:Getting old values from variables and state从变量和状态中获取旧值
【发布时间】: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


【解决方案1】:

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

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

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

【讨论】:

  • 在这种情况下,我将更新所有收藏,而不仅仅是一项......
  • 你能谈谈你的工作流程和更多的代码 sn-ps。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-04
  • 2020-08-25
  • 2022-11-17
  • 2011-07-28
  • 2015-06-02
  • 1970-01-01
  • 2019-06-27
相关资源
最近更新 更多