[component] 오늘 하루 보지 않기 팝업

Suyeon·2020년 11월 24일
3

React

목록 보기
9/26

You can choose cookie or localStorage for popup.

참고 자료
reference-1
reference-2
reference-3

Using localStorage

// index.js
import React, { useState, useEffect } from 'react';
import Modal from 'components/Modal/Modal';

const Home = () => {
  const [showModal, setShowModal] = useState(false);
  const HAS_VISITED_BEFORE = localStorage.getItem('hasVisitedBefore');

  useEffect(() => {
    const handleShowModal = () => {
      if (HAS_VISITED_BEFORE && HAS_VISITED_BEFORE > new Date()) {
        return;
      }

      if (!HAS_VISITED_BEFORE) {
        setShowModal(true);
        let expires = new Date();
        expires = expires.setHours(expires.getHours() + 24);
        localStorage.setItem('hasVisitedBefore', expires);
      }
    };

    window.setTimeout(handleShowModal, 2000);
  }, [HAS_VISITED_BEFORE]);

  const handleClose = () => setShowModal(false);

  return (
    {showModal && <Modal onClose={handleClose} />}
    // ...
  )
};

export default Home;
profile
Hello World.

3개의 댓글

comment-user-thumbnail
2021년 1월 25일

한눈에 알아보기 좋은 코드네요! 참고 많이 되었습니다 감사합니다

1개의 답글
comment-user-thumbnail
2022년 7월 1일

혹시 handleShowModal 은 언제 호출되나요 ?

답글 달기