• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Vue 게시판 라이프사이클 0이 되면 타이머 삭제 질문

라이프사이클 0이 되면 타이머 삭제 질문

9 글 보임 - 1 에서 9 까지 (총 9 중에서)
  • 글쓴이
  • #8144

    이용혁
    참가자

    안녕하세요.

     

    <p v-if="showSaleCount == true">할인까지 남은 시간 : {{saleCount}}초</p>

     data(){
        return {
          showSaleCount : true,
          saleCount : 30,
        }
      },
      mounted(){
        setInterval(()=>{
          this.saleCount--;
        }, 1000);
        setTimeout(()=>{
          this.showSaleCount = false;
        }, 30000);
      },

     

    위와같이 30초 카운트 후 0초가 되면 타이머가 false값으로 변경되면서 삭제되게끔 했습니다.

    구현은 가능했지만 좀 더 나은 방법이 있었는지 궁금해 질문을 남깁니다.

    #8146

    codingapple
    키 마스터

    그냥 UI만 안보이게 처리해도 괜찮은 방법인데

    타이머 삭제해버리는 방법이 확실하고 안심되는 방법입니다

    clearInterval() 안에 setinterval타이머를 집어넣으면 타이머 삭제도 가능합니다 

     

    #8152

    이용혁
    참가자

    mounted(){
        setTimeout(()=>{
          this.showDiscount = false;
        }, 2000);
        clearInterval(setInterval(()=>{
          this.saleCount--;
        }, 1000));
      },

     

    말씀하시는게 이게 맞나요?

    위의 코드로 변경하니 setInterval도 동작하지 않습니다.

    #8160

    codingapple
    키 마스터

    var a = setInterval()을 변수에 담아서 쓰시고 

    그걸 타이머 제거하고 싶을 때 clearInterval(a)안에 집어넣으면 됩니다 

    #8165

    이용혁
    참가자

    감사합니다. 해결했습니다^^

    #24793

    황철원
    참가자

    export default {
    name: "Discount",
    data() {
    return {
    discountNum: 30,
    };
    },
    mounted() {
    this.a = setInterval(() => {
    this.discountNum--;
    }, 200);
    if (this.discountNum == 0) {
    clearInterval(this.a);
    }
    },
    };

    안녕하세요 강사님, 값이 0 되면 멈추고싶은데 잘 작동하지 않아 여쭙고 싶어서 글을 작성하게 되었습니다:)

    #24842

    codingapple
    키 마스터

    a라는 데이터가 없는것 같은데 하나 만들어봅시다 

    #25668

    이호철
    참가자

    우선 setInterval을 변수에 담아서 나중에 clearInterval에서 재사용하려는 거 같아서
    methods에 등록해놓았고,
    마운트 될때 setInterval을 실행시키고,

    업데이트 될때 0초가 되면 clearInterval을 실행시키도록 작성해보았는데,
    어쩐 일인지 카운트가 계속 되네요. 문제가 뭘까요?

    `js
    export default {
    name: "Discount",
    data(){
    return {
    countDown : 5,
    }
    },
    methods : {
    countFunc(){
    setInterval(()=>{
    this.countDown = this.countDown - 1;
    },1000)
    }
    },
    mounted() {
    if(this.countDown !== 0){
    this.countFunc();
    }
    },
    updated(){
    if(this.countDown === 0){
    clearInterval(this.countFunc)
    }
    }
    }`

    #25685

    codingapple
    키 마스터

    setInterval을 변수에 저장해놓고 그걸 clearInterval에 넣어야합니다

9 글 보임 - 1 에서 9 까지 (총 9 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠