인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

강두희님의 프로필 이미지
강두희

작성한 질문수

[2024] 한입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

12.11) Home 페이지 구현하기 2. 기능

12.11) Home 페이지 구현하기 2.기능 - 버튼 기능 질문

해결된 질문

작성

·

77

1

안녕하세요 강사님!

12.11) Home 페이지 구현하기 2.기능 강의에서,

getMonth( ) 함수는 월이 0부터 시작된다고 말씀하셨습니다.

따라서 아래 코드처럼 Header 컴포넌트에 title의 props 값으로 +1을 하여 전달해야 한다는 것을 이해했습니다.

  <Header
        title={`${pivoDate.getFullYear()}년 ${pivoDate.getMonth() + 1}월`}
        leftChild={<Button text={"<"} onClick={onDecreaseMonth} />}
        rightChild={<Button text={">"} onClick={onIncreaseMonth} />}
      />

 

그런데 버튼을 누르면 저번 달, 다음 달로 이동하는 함수를 만들 땐 getMonth( ) 함수를 불러오고 각각 1을 더하거나 빼는 함수로 설정한 점이 이해가 가지 않습니다.

0월부터 시작하기 때문에 각각 2를 더하거나 빼야 한다고 생각했는데 왜 1을 더하고 빼는지 모르겠습니다. ㅠㅠ

  const onIncreaseMonth = () => {
    setPivoDate(new Date(pivoDate.getFullYear(), pivoDate.getMonth() + 1));
  };
  const onDecreaseMonth = () => {
    setPivoDate(new Date(pivoDate.getFullYear(), pivoDate.getMonth() - 1));
  };

 

항상 좋은 강의 만들어주셔서 감사합니다!

답변 1

2

이정환 Winterlood님의 프로필 이미지
이정환 Winterlood
지식공유자

안녕하세요 이정환입니다.

화면에 렌더링 할 때에만 +1을 해 표기해주기 때문입니다.

따라서 Date 객체에 날짜를 늘리고 뺄때에는 그냥 일반적인 연산을 수행하듯이 해주시면 됩니다.

예를 들어 현재 3월인데 2월로 이동하려고자 한다면 Date 객체에 보관된 월은 2에서 1로 줄어들겠죠

그러나 어짜피 렌더링 할 때에는 +1을 해 표기할 것이기 때문에 결과적으로 2월이 표기될 겁니다.

이해가 되었다면 "해결" 버튼을 눌러주시면 감사하겠습니다 !

강두희님의 프로필 이미지
강두희
질문자

알려주셔서 감사합니다!ㅎㅎ

강두희님의 프로필 이미지
강두희

작성한 질문수

질문하기