【问题标题】:React countdown using Material UI ProgressBar使用 Material UI ProgressBar 反应倒计时
【发布时间】:2021-08-18 06:38:14
【问题描述】:

我正在尝试实现一个功能,当用户按下锁定按钮时,项目的 isReserved 状态变为 true。完成后,将在 Firebase Firestore 中创建另外两个状态,startDate 和 expiryDate。 expiryDate 距离startDate 72 小时,应该映射到进度条。一旦进度值减少到 0,项目的 isReserved 状态在 firestore 中反转回 false。

firestore 文档有以下数据

reserveDB.doc(item.productID).set({
        productID: item.productID,
        image: item.image,
        price: item.price,
        productName: item.productName,
        isReserved: true,
        startDate: Date.now(), // time saved as timestamp
        expiryDate: event.setHours(72), // time saved as timestamp
      });

我尝试了在 YouTube 上找到的各种示例,但其中大多数都以天、小时、分钟和秒的格式实现倒计时。我也尝试过,但我的只显示剩余的天数和小时数。您可以在此链接查看我的其余尝试:https://stackblitz.com/edit/react-njnjwf?file=src/App.js

【问题讨论】:

    标签: javascript reactjs


    【解决方案1】:

    在您的 setHours 函数中,获取当前日期的小时数,然后加上 72。

      const newStartDate = new Date();
    
      const getExpiryDate = (date, hours) => {
        const expirationDate = new Date(date);
        expirationDate.setHours(expirationDate.getHours() + hours);
        return expirationDate;
      };
    
      reserveDB.doc(item.productID).set({
        productID: item.productID,
        image: item.image,
        price: item.price,
        productName: item.productName,
        isReserved: true,
        startDate: newStartDate,
        expiryDate: getExpiryDate(newStartDate, 72),
      });
    

    【讨论】:

    • 感谢您的回复,但我遇到的问题是将ProgressBar 从expiryDate 倒计时到0。
    猜你喜欢
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-16
    • 1970-01-01
    • 2020-10-23
    • 1970-01-01
    • 2020-08-12
    相关资源
    最近更新 更多