카운트 다운 타이머 일 추가 반응

알 리프 칸

14 일 카운트 다운 타이머를 만들려고하는데 페이지를 새로 고칠 때 재설정되지 않아야합니다. 나는 이미 그것을했지만 문제는 지금 날짜를 추가하는 방법을 모르겠다는 것입니다 + 14 일 동안 어떻게 할 수 있는지에 대한 아이디어. 도움을 주셔서 감사합니다.

이것은 내 코드입니다.

const Timer = () => {
  const [timerDays, setTimerDays] = useState("00");
  const [timerHours, setTimerHours] = useState("00");
  const [timerMinutes, setTimerMinutes] = useState("00");
  const [timerSeconds, setTimerSeconds] = useState("00");

  let interval = useRef();

  const startTimer = () => {
    const countdownDate = new Date("Jan 17, 2021 00:00:00").getTime();

    interval = setInterval(() => {
      const now = new Date().getTime();
      const distance = countdownDate - now;

      const days = Math.floor(distance / (1000 * 60 * 60 * 24));
      const hours = Math.floor(
        (distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)
      );
      const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
      const seconds = Math.floor((distance % (1000 * 60)) / 1000);

      if (distance < 0) {
        clearInterval(interval.current);
      } else {
        setTimerDays(days);
        setTimerHours(hours);
        setTimerMinutes(minutes);
        setTimerSeconds(seconds);
      }
    });
  };

  useEffect(() => {
    const someref = interval.current;
    startTimer();
    return () => {
      clearInterval(someref);
    };
  }, []);
};
타기 카 바리

브라우저 새로 고침이 발생한 후에도 타이머를 사용하기를 원하기 때문에 로컬 저장소에서 시간을 지속적으로 유지하는 방법이 필요합니다. 그래서 여기에 당신이해야 할 일이 있습니다 :

const Timer = () => {
  const [timerDays, setTimerDays] = useState("00");
  const [timerHours, setTimerHours] = useState("00");
  const [timerMinutes, setTimerMinutes] = useState("00");
  const [timerSeconds, setTimerSeconds] = useState("00");

  let interval = useRef();

  const startTimer = (countdownDate) => {
    const now = new Date().getTime();
    const distance = countdownDate - now;

    const days = Math.floor(distance / (1000 * 60 * 60 * 24));
    const hours = Math.floor(
      (distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)
    );
    const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
    const seconds = Math.floor((distance % (1000 * 60)) / 1000);

    if (distance < 0) {
      clearInterval(interval.current);
    } else {
      setTimerDays(days);
      setTimerHours(hours);
      setTimerMinutes(minutes);
      setTimerSeconds(seconds);
    }
  };

  function saveInLocalStorage(time) {
    localStorage.setItem("timer", time);
  }

  function getTimeFromLocalStorage() {
    return localStorage.getItem("timer");
  }

  useEffect(() => {
    const localTimer = getTimeFromLocalStorage();

    if (localTimer) {
      interval.current = setInterval(() => {
        startTimer(+localTimer);
      }, 1000);
    } else {
      const countdownDate = new Date().getTime() + 14 * 24 * 60 * 1000;
      saveInLocalStorage(countdownDate);
      interval.current = setInterval(() => {
        startTimer(+countdownDate);
      }, 1000);
    }

    return () => clearInterval(interval.current);
  }, []);

  return (
    <div>
      timerDays: {timerDays} &nbsp; timerHours: {timerHours} &nbsp;
      timerMinutes: {timerMinutes} &nbsp; timerSeconds: {timerSeconds} &nbsp;
    </div>
  );
};

다음은 작동하는 데모입니다 : https://codesandbox.io/s/hardcore-sammet-9zj32?file=/src/App.js:84-1823

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

반응 후크가있는 카운트 다운 타이머

분류에서Dev

반응 카운트 다운 타이머가 잘 감소하지 않고 일관되지 않게 숫자를 변경합니다.

분류에서Dev

반응 카운트 다운 타이머를 만드는 방법

분류에서Dev

Linux 용 일반 오디오 절전 카운트 다운 타이머

분류에서Dev

이 jquery 카운트 다운 타이머에 "일"을 추가하는 데 도움이 필요합니다.

분류에서Dev

카운트 다운 타이머를 추가하는 방법

분류에서Dev

카운트 다운 타이머에 초 추가

분류에서Dev

jQuery에서 카운트 다운 타이머 스타일 지정

분류에서Dev

3 일마다 카운트 다운 타이머

분류에서Dev

매일 특정 시간에 JavaScript 카운트 다운 타이머

분류에서Dev

c # 카운트 다운 타이머 일시 중지

분류에서Dev

카운트 다운 타이머는 분과 초가 0 일 때 시간을 줄이지 않습니다.

분류에서Dev

WooCommerce 단일 제품 페이지에서 제품 판매가 끝날 때까지 카운트 다운 타이머

분류에서Dev

카운트 다운 타이머 카운터가 작동하지 않음

분류에서Dev

현재 카운트 다운 타이머 값 가져 오기

분류에서Dev

카운트 다운 타이머가 중지되지 않음

분류에서Dev

동적 날짜가있는 카운트 다운 타이머

분류에서Dev

카운트 다운 타이머가 꺼지는 동안 게임 일시 중지 해제

분류에서Dev

오류 : 자바 스크립트 카운트 다운 타이머가 카운트 다운하지 않습니다.

분류에서Dev

jQuery 진행률 표시 줄 스타일 카운트 다운 타이머

분류에서Dev

JQuery 카운트 다운 타이머가 카운트 다운되지 않습니다.

분류에서Dev

다중 카운트 다운 타이머

분류에서Dev

AVR 카운트 다운 타이머

분류에서Dev

타이머 (카운트 다운 용)

분류에서Dev

증분 타이머 카운트 다운

분류에서Dev

날짜 카운트 다운 타이머

분류에서Dev

C # Blazor : 카운트 다운 타이머

분류에서Dev

iOS 카운트 다운 타이머

분류에서Dev

Android ProgressBar 타이머 카운트 다운

Related 관련 기사

  1. 1

    반응 후크가있는 카운트 다운 타이머

  2. 2

    반응 카운트 다운 타이머가 잘 감소하지 않고 일관되지 않게 숫자를 변경합니다.

  3. 3

    반응 카운트 다운 타이머를 만드는 방법

  4. 4

    Linux 용 일반 오디오 절전 카운트 다운 타이머

  5. 5

    이 jquery 카운트 다운 타이머에 "일"을 추가하는 데 도움이 필요합니다.

  6. 6

    카운트 다운 타이머를 추가하는 방법

  7. 7

    카운트 다운 타이머에 초 추가

  8. 8

    jQuery에서 카운트 다운 타이머 스타일 지정

  9. 9

    3 일마다 카운트 다운 타이머

  10. 10

    매일 특정 시간에 JavaScript 카운트 다운 타이머

  11. 11

    c # 카운트 다운 타이머 일시 중지

  12. 12

    카운트 다운 타이머는 분과 초가 0 일 때 시간을 줄이지 않습니다.

  13. 13

    WooCommerce 단일 제품 페이지에서 제품 판매가 끝날 때까지 카운트 다운 타이머

  14. 14

    카운트 다운 타이머 카운터가 작동하지 않음

  15. 15

    현재 카운트 다운 타이머 값 가져 오기

  16. 16

    카운트 다운 타이머가 중지되지 않음

  17. 17

    동적 날짜가있는 카운트 다운 타이머

  18. 18

    카운트 다운 타이머가 꺼지는 동안 게임 일시 중지 해제

  19. 19

    오류 : 자바 스크립트 카운트 다운 타이머가 카운트 다운하지 않습니다.

  20. 20

    jQuery 진행률 표시 줄 스타일 카운트 다운 타이머

  21. 21

    JQuery 카운트 다운 타이머가 카운트 다운되지 않습니다.

  22. 22

    다중 카운트 다운 타이머

  23. 23

    AVR 카운트 다운 타이머

  24. 24

    타이머 (카운트 다운 용)

  25. 25

    증분 타이머 카운트 다운

  26. 26

    날짜 카운트 다운 타이머

  27. 27

    C # Blazor : 카운트 다운 타이머

  28. 28

    iOS 카운트 다운 타이머

  29. 29

    Android ProgressBar 타이머 카운트 다운

뜨겁다태그

보관