【问题标题】:Change not able to update on commentsRef.on("child_changed", (data) => {更改无法更新 commentsRef.on("child_changed", (data) => {
【发布时间】:2021-06-12 02:15:49
【问题描述】:

您好,我正在使用带有 react 的 firebase,我尝试使用时的问题

  commentsRef.limitToLast(1).on("child_changed", (data) => {
     
        if (guests) {
          const key = data.key;
          const updatedGuest = data.val();
//guests ->isnt updated from last trigger
          const cloneGuests =_.cloneDeep(guests);
          cloneGuests.forEach((element, index) => {
            if (element.guestID === key) {
              cloneGuests[index] = updatedGuest;
            }
          });
          setGuests(cloneGuests);
        }
      });

我正在尝试使用带有我的 prev 状态和新数据的 guest,prev 状态未更新的问题,因为 firebase 的触发器比更改状态更快,

【问题讨论】:

    标签: reactjs firebase-realtime-database


    【解决方案1】:

    您可以消除反应油漆并查询更新

    let changes = [];
    const storeData = (changedData) => {
               changes.push({
                      key: changedData.key,
                      updatedGuest: changedData.val()
               });
    }
    
    const updateDisplay = () => {
           for (canst guest in storeData){
                const cloneGuests =_.cloneDeep(guests);
                  cloneGuests.forEach((element, index) => {
                    if (element.guestID === key) {
                      cloneGuests[index] = updatedGuest;
                    }
                  });
                }
                  setGuests(cloneGuests);
                  changes  = [];
      
    
    }
    
    commentsRef.limitToLast(1).on("child_changed", (data) => {
            if (guests) {
              storeData(guests);
              debounce(updateDisplay,500);
            }
          });
    

    【讨论】:

      猜你喜欢
      • 2017-11-17
      • 2017-06-20
      • 2019-05-10
      • 1970-01-01
      • 2015-12-09
      • 1970-01-01
      • 1970-01-01
      • 2016-04-11
      相关资源
      最近更新 更多