【问题标题】:Countdown from date with days, hours, minutes, secondes with useEffect [duplicate]使用useEffect从日期开始倒计时,包括天、小时、分钟、秒[重复]
【发布时间】:2022-01-20 12:01:26
【问题描述】:

我从指定日期开始倒计时, 我接近让它工作了,但我不明白这个问题

我刚开始 ReactJS,所以显然我的类型不对 我需要对天、小时、分钟和秒进行倒计时,我使用 useEffect 来制作它我不知道它是否最适合它

TypeError:赋值给常量变量。 获取时间2

42 |小时=小时-(天*24);

import React, { useState, useEffect } from 'react';

const Countdown = () => {
  const[rDay, setRDay] = useState(0);
  const[rHour, setRHour] = useState(0);
  const[rMin, setRMin] = useState(0);
  const[rSec, setRSec] = useState(0);

function getTime2() {
   const date_future = new Date(
    Date.UTC(2021, 11, 22, 18, 0, 0),
  ).getTime(); 
   const date_now = new Date();

   const seconds = Math.floor((date_future - (date_now))/1000);
   const minutes = Math.floor(seconds/60);
   const hours = Math.floor(minutes/60);
   const days = Math.floor(hours/24);
    
   hours = hours-(days*24);
   minutes = minutes-(days*24*60)-(hours*60);
   seconds = seconds-(days*24*60*60)-(hours*60*60)-(minutes*60);
   
   setRDay(days);
   setRHour(hours);
   setRMin(minutes);
   setRSec(seconds);
}

   useEffect(()=>{
    setInterval(function(){
      getTime2()
    }, 1000);
  }, []);


  return(
    <div className="timer-container">
      <div className="numbers">
      <span className = "num-span">{("0" + rDay).slice(-2)}</span>
        <span className = "segment">:</span>
        <span className = "num-span">{("0" + rHour).slice(-2)}</span>
        <span className = "segment">:</span>
        <span className = "num-span">{("0" + rMin).slice(-2)}</span>
        <span className = "segment">:</span>
        <span className = "num-span">{("0" + rSec).slice(-2)}</span>
      </div>
      <div class="sub-numbers">
      <span className = "sub-span">Day(s)</span>
        <span></span>
        <span className = "sub-span">H</span>
        <span></span>
        <span className = "sub-span">Min</span>
        <span></span>
        <span className = "sub-span">Sec</span>
      </div>
     
    </div>
    
  );
};


export default Countdown;
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

【问题讨论】:

    标签: javascript reactjs use-effect


    【解决方案1】:

    您正在重新分配已使用const 声明为常量的变量。将const 更改为letTypeError 应该会消失:

       let seconds = Math.floor((date_future - (date_now))/1000);
       let minutes = Math.floor(seconds/60);
       let hours = Math.floor(minutes/60);
       let days = Math.floor(hours/24);
        
       hours = hours-(days*24);
       minutes = minutes-(days*24*60)-(hours*60);
       seconds = seconds-(days*24*60*60)-(hours*60*60)-(minutes*60);
    

    【讨论】:

    • 哦...就这么简单,非常感谢,有点奇怪,我尝试使用“var”但我也遇到了错误...也许我刷新时很快就开始了
    猜你喜欢
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 2021-07-16
    • 2014-10-26
    • 2017-10-15
    • 2021-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多