12.11) Home 페이지 구현하기 - 년월 (In/De)crease 관련
강사님께서 말씀주신대로 년월 증가처리에 대해서
동일하게 코드를 작성하였습니다.
<div>
<Header
title={`${pivotDate.getFullYear()}년 ${pivotDate.getMonth()+1}월`}
leftChild={<Button onClick={onDecreaseMonth} text={"<"}/>}
rightChild={<Button onClick={onIncreaseMonth} text={">"}/>}
/>
<DiaryList/>
</div>(질문)Home.jsx에서 Button 구성요소 ">" 클릭시에
onClick시에 onIncrease 함수객체가 <Button/> 구성요소가 props형태로 함수객체가 전달되고 있습니다.
rightChild={<Button onClick={onIncreaseMonth} text={">"}/>}Button 구성요소에는 전달받은 onClick 전달받은
함수객체에 대해서 별도 처리가 없어도 되는것인가요?
const Button = ({text, type, onClick}) => {
console.log("Button onClick : ", onClick)
return (
<button
onClick={onClick}
className={`Button Button_${type}`}>
{text}
</button>
)
}
답변 2
0
안녕하세요 이정환입니다.
네 이미 처리가 완료되어있는 코드입니다.
질문주신 코드에서 Header 컴포넌트에게 leftChild Props로 전달된 <Button onClick={onDecreaseMonth} text={"<"} /> 는 Button 컴포넌트의 렌더링 결과를 의미하는데, 이때 이 Button 컴포넌트에게 전달된 Props를 살펴보시면 다음과 같습니다.
onClick : onDecreaseMonth 함수
text : "<"
그러므로 아래의 코드와 같이 정의된 Button 컴포넌트는 위 Props에 따라 클릭시 onDecraseMonth 함수를 실행하는 버튼을 렌더링하게 됩니다.
// Button.jsx
const Button = ({ text, type, onClick }) => {
return (
<button onClick={onClick} className={`...`}>
{text}
</button>
);
};더 쉽게 정리하자면 Button 컴포넌트는 onClick 이라는 이름의 Props를 받아서, <button>의 onClick 이벤트 핸들러로 설정하고 있습니다. 이를 통해 이 <button>이 클릭되었을 때 onClick Props로 제공된 함수를 실행하도록 설정하고 있습니다.
그러므로 Button 컴포넌트에 onClick Props를 이미 전달했다면 이후에는 별도의 처리가 없어도 됩니다.
0
안녕하세요, 인프런 AI 인턴입니다.
wonyongick님, Button 컴포넌트 및 그 사용 방법에 대한 궁금증이 있으신 것 같습니다. 제가 해당 내용을 간단히 설명해드리겠습니다.
Button 컴포넌트에서 전달받은 함수 사용하기
Button 컴포넌트를 정의할 때, props로 onClick이라는 함수를 받습니다. 이를 아래와 같이 button 요소의 onClick 속성으로 넘겨주고 있습니다.
const Button = ({ text, type, onClick }) => {
return (
<button
onClick={onClick} // 전달받은 onClick 함수를 button의 onClick 이벤트로 설정
className={`Button Button_${type}`}
>
{text}
</button>
);
};
How it Works:
- 전달된 함수 그대로 사용:
Button컴포넌트는onClick이라는 props를 통해 함수를 전달받고, 이 함수를button요소의 클릭 이벤트 핸들러로 사용합니다. 그러므로button이 클릭되면 전달받은onClick함수가 호출됩니다. 이 과정에서 별도의 추가적인 처리가 필요 없습니다.
- 함수의 참조 전달:
onClick={onClick}부분은 단순히 함수 참조를button의onClick이벤트에 전달하는 것입니다.
결론적으로, Button 컴포넌트 내부에서는 onClick 함수를 받기만 하고, 특별히 수정하지 않고 그대로 button의 클릭 이벤트로 사용하는 것이므로 별도의 처리가 만약 추가적인 로직이 필요하지 않으면 필요하지 않습니다. 만약 클릭 시 추가적인 동작이 필요하다면, Button 컴포넌트 내부에서 onClick 핸들러를 감싸는 형태로 추가 로직을 포함할 수 있습니다.
유사한 질문에 대한 참조 링크
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
useEffect와 lifecycle문의
0
32
2
프론트엔드 학습 수준 문의
0
44
2
리액트 챕터별 코드에서 eslint 설정파일이 없어요
0
51
2
데이터 로딩중 화면만 계속 나와요!!
0
56
2
퍼블리셔일경우 어느정도 수준까지 강의를 들어야할까요
0
80
2
이후의 커리큘럼 문의
0
102
2
실슬환경 설정에서 save후 console.log 부분이 새로고침이 안되는현상입니다.
0
50
2
최적화 관련 질문있습니다 (useMemo 등)
0
85
3
프로바이더 컴포넌트의 위치는 어떤 기준인가요?
1
82
3
Date 객체에 관련하여 질문드립니다.
0
85
2
리액트 개정판 교재 질문
0
60
2
예제코드가 안나와요!
0
78
2
select a variant 선택에서 javascript와 javascript+react compiler 중 무엇을 선택해야하나요? com
0
109
2
onMouseEnter 관련 문의 드립니다
0
93
3
배열의 렌더링 관련 질문 드립니다.
0
73
2
2:40초 refObj를 콘솔로 출력시 오류가 발생합니다.
0
113
2
TS, 리액트 강의중에 뭘 먼저 수강하는게 좋을까요?
0
137
2
useCallback 적용한 onCreate, onUpdate, onDelete 함수..
0
71
1
vs code 자동완성관련 문의
0
113
2
91강 useEffect내에서 상태변화함수 호출시 발생하는 에러
1
181
2
87강 필터 함수 질문
0
69
2
useRef, useState count 비교
0
67
2
안된다고했던 이유가 무엇이었는지 모르겠습니다
0
91
2
85강에서 객체를 왜 클래스로 만들어서 new 하지 않는건지 궁금합니다.
0
76
2





