-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
경북대 FE_이은경 4주차 step3~4 #102
Open
dmsrud1218
wants to merge
17
commits into
kakao-tech-campus-2nd-step2:dmsrud1218
Choose a base branch
from
dmsrud1218:step3
base: dmsrud1218
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
17 commits
Select commit
Hold shift + click to select a range
76634f8
docs : README.md 기능 목록 정리
dmsrud1218 7e488e2
Chore : Chakra 설치
dmsrud1218 daed99a
Feat: 상세페이지 api , ui 구현
dmsrud1218 698f448
Chore: 나에게 선물하기 버튼 클릭 시 로그인 되어있지 않다면 로그인 페이지로 이동
dmsrud1218 cdaffaa
feat : 결제페이지 ui 구현
dmsrud1218 55bf353
docs : step2 README.MD 작성
dmsrud1218 fc84bb3
feat : step2 카드 메시지 입력하지 않으면 메시지를 입력하라고 안내
dmsrud1218 a07ccd6
Chore : 카드 메시지가 100글자 넘으면 이내로 입력안내
dmsrud1218 3270135
Chore: 현금영수증 관련 메시지 안내
dmsrud1218 2715caf
Chore : 상세페이지 상품 개수 초과한 경우 선택불가 기능 추가
dmsrud1218 4fb5425
docs : README.md 수정
dmsrud1218 684511c
chore : location으로 로그인 후 상세페이지 돌아오기 수정
dmsrud1218 24dc6c0
Chore : 결제페이지 헤더 수정
dmsrud1218 6d92ed3
dosc : README.md step3 추가
dmsrud1218 bc761bf
Chore : react-hook-form 변경
dmsrud1218 2a2d9bc
chore : react-hook-form 으로 결제페이지 수정
dmsrud1218 65b376a
doce :step4 제출
dmsrud1218 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,58 @@ | ||
# 카카오 테크 캠퍼스 - 프론트엔드 카카오 선물하기 편 | ||
|
||
## Step1 | ||
|
||
- 결과 링크를 참고하여 상세 페이지 및 상품 결제 페이지의 UI를 구현 | ||
- 이 과정에서 UI를 chakra-ui 사용해서 구현 (단, 직접 구현해도 무방하나 다른 UI 라이브러리 사용은 금지) | ||
- 이번 과제는 Form을 다루는 것이 중점이기 때문에 UI 구현에 어려움을 겪는다면 임의로 변경가능 | ||
- 상세 페이지에서 청부된 oas.yaml 파일의 /api/v1/products/{productId}/detail, /api/v1/products/{productId}/options 를 참고해서 API를 구현 | ||
- 없는 상품의 경우 메인 페이지로 연결되도록 한다 | ||
- 나에게 선물하기 버튼 클릭 시 로그인이 되어있지 않다면 로그인 페이지로 이동 | ||
- React Hook Form 등의 라이브러리를 사용하지 않으며 React의 form, ref, state만 사용하여 구현 | ||
|
||
--- | ||
|
||
## Step2 | ||
|
||
- [x] 상품 상세 페이지에서 상품의 개수를 option API의 giftOrderLimit을 초과한 경우 선택이 불가하도록 | ||
- [x] 결제 페이지의 Form의 validation 하기 | ||
- [x] 카드 메시지를 입력하지 않으면 메시지를 입력하라고 안내 | ||
- [x] 카드 메시지가 100글자가 넘어가면 100자 이내로 입력하라고 안내 | ||
- [x] 현금 영수증 checkboc 클릭 시 현금영수증 번호가 입력되었는지 확인 | ||
- [x] 현금 영수증 입력은 숫자만 입력하도록 안내 | ||
|
||
--- | ||
|
||
## Step3 | ||
|
||
- 기존에 만든 form/ input 을 react-hook-form으로 변경 | ||
- validate 또한 react-hook-form 기능을 적극적으로 활용 (이 과정에서 zod을 사용해도 됨!) | ||
|
||
--- | ||
|
||
## Step4 | ||
|
||
### 4주차 질문 | ||
|
||
- 1. 제어 컴포넌트와 비제어 컴포넌트의 차이가 무엇이고 제어 컴포넌트로 Form을 만들어야 하는 경우가 있다면 어떤 경우인지 예시와 함께 설명해주세요. | ||
- 제어 컴포넌트 (Controlled Component) | ||
제어 컴포넌트는 React 컴포넌트의 상태(state)가 폼 요소의 값을 관리합니다. 폼 요소의 값이 컴포넌트의 상태에 의해 제어됩니다. | ||
|
||
예시로는 | ||
폼 데이터를 실시간으로 검증하거나 포맷팅해야 할 때 | ||
폼 요소의 값에 따라 동적으로 UI를 변경해야 할 때 | ||
폼 제출 전에 데이터를 가공하거나 확인해야 할 때 | ||
|
||
- 비제어 컴포넌트 (Uncontrolled Component) | ||
이 경우는 폼 요소가 자체적으로 상태를 관리합니다. React의 ref를 사용하여 DOM 요소에 직접 접근하여 값을 가져옵니다. | ||
|
||
- 2. input type의 종류와 각각 어떤 특징을 가지고 있는지 설명해 주세요. | ||
text : 텍스트 입력 | ||
password: 입력된 텍스트가 보이지 않도록 마스킹 | ||
tel: 전화번호 입력. 전화번호 형식의 검증은 없지만, 모바일 기기에서는 전화번호 키패드가 표시됨. | ||
hidden: 사용자에게 보이지 않는 숨겨진 입력. 폼 데이터에 포함됨 | ||
|
||
- 3. label tag는 어떤 역할을 하며 label로 input field를 감싸면 어떻게 동작하는지 설명해 주세요. | ||
label 태그는 HTML 폼에서 input, textarea 등의 폼 요소에 대한 설명을 제공하는 역할을 합니다. 사용자가 입력 필드를 쉽게 이해하고 접근할 수 있도록 돕습니다. | ||
for 속성 사용: label 태그의 for 속성이 입력 필드의 id 속성과 일치하면, label을 클릭할 때 해당 입력 필드가 포커스를 받습니다. | ||
입력 필드를 감쌈: label 태그가 입력 필드를 감싸고 있으면, label의 어느 부분을 클릭해도 내부의 입력 필드가 포커스를 받습니다. |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
input의 type은 훨씬 많습니다 ㅎㅎ 개인적으로는 작성해주신 것들보다 radio, file, range, checkbox를 자주 쓰는 것 같아요