Skip to content
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 #71

Open
wants to merge 24 commits into
base: seorinnn
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 22 commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
0bc79d6
chore : chakra-ui 설치
seorinnn Jul 17, 2024
b1ae4d3
feat : DefaultGoodsItems productId 속성 추가 및 상품 클릭 시 상세페이지로 이동하도록 Link …
seorinnn Jul 17, 2024
37b3663
feat : RankingGoodsItems productId 속성 추가
seorinnn Jul 17, 2024
f691fc1
feat : Default 스토리에 productId 추가
seorinnn Jul 17, 2024
f1d7b7d
feat : Ranking Default 스토리에 productId 추가
seorinnn Jul 17, 2024
6f78087
feat : ThemeGoodsSection에서 DefaultGoodsItems productId 속성 추가
seorinnn Jul 17, 2024
257e3d9
feat : Product 상세 페이지 구현
seorinnn Jul 17, 2024
9b38d96
feat : 상품 상세페이지 route 설정 추가
seorinnn Jul 17, 2024
834ca28
style : 상품 상세페이지 디자인 수정
seorinnn Jul 17, 2024
36b84cf
chore : chakra-ui/icons 설치
seorinnn Jul 17, 2024
021a069
feat : 구매할 상품 개수 선택 기능 구현
seorinnn Jul 17, 2024
7f26006
feat : 구매 페이지 이동 경로 수정
seorinnn Jul 17, 2024
d35d101
feat : 상품 구매 페이지 라우팅 설정 추가
seorinnn Jul 17, 2024
0f67dbd
feat : 상품 상세데이터 가져오는 useProduct hook 추가
seorinnn Jul 17, 2024
afd4531
refactor : 상품 상세데이터 가져오는 부분 커스텀훅으로 분리
seorinnn Jul 17, 2024
0f0f550
feat : 나에게 선물하기 버튼 클릭 시 로그인 여부 확인 기능 구현
seorinnn Jul 18, 2024
ef87949
chore : chakra-ui 적용
seorinnn Jul 18, 2024
0add86e
feat : 상품 구매 페이지 구현
seorinnn Jul 18, 2024
a589a3e
style : 상품 상세페이지 디자인 수정
seorinnn Jul 18, 2024
414057c
feat : 상품 개수 giftOrderLimit 초과 불가능 기능 구현
seorinnn Jul 19, 2024
366ce33
feat : 상품 구매 validation 기능 구현
seorinnn Jul 19, 2024
b6b678e
feat : step4 질문 README.md 에 답변 작성
seorinnn Jul 19, 2024
ac813b2
chore : react-hook-form 설치
seorinnn Jul 21, 2024
62910e3
refactor: 기존 Form/input을 react-hook-form 으로 변경
seorinnn Jul 21, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1 +1,53 @@
# 카카오 테크 캠퍼스 - 프론트엔드 카카오 선물하기 편

## 4주차 과제 step4 질문 답변

### 질문 1: 제어 컴포넌트와 비제어 컴포넌트의 차이와 제어 컴포넌트로 Form을 만들어야 하는 경우

#### 1. 제어 컴포넌트

- 제어 컴포넌트란 리액트에서 상태를 통해 입력 요소의 값을 관리하는 방식이다.
- 입력값은 리액트의 상태(state)에 저장된다.

#### 2. 비제어 컴포넌트

- 비제어 컴포넌트는 리액트의 상태를 이용하지 않고, DOM 자체에서 입력 요소의 값을 관리하는 방식이다.
- 참조(ref)를 사용해 입력 요소의 값을 직접 접근하고 제어한다.

#### 제어 컴포넌트로 Form을 만들어야 하는 경우

- 제어 컴포넌트를 사용하면 폼 입력 데이터를 쉽게 검증하고 조작할 수 있다.
- 그러므로 입력 검증이 필요한 경우(실시간 유효성 검사), 입력 값에 기반한 UI 업데이트가 필요한 경우, 폼 데이터를 `Redux`나 `Context API`와 같은 전역 상태로 관리하는 경우 제어 컴포넌트를 사용하는 것이 좋다.

### 질문 2. input type의 종류와 각각 어떤 특징을 가지고 있는지 설명해 주세요.

- `text`: 단일 줄 텍스트 입력을 받는다.
- `email`: 이메일 주소 형식의 입력을 받는다. 브라우저에서 이메일 형식 검증이 가능하다.
- `password`: 비밀번호 입력을 받으며 입력한 문자가 가려진다.
- `number`: 숫자 입력을 받는다. min, max 속성으로 입력 범위를 제한할 수 있다.
- `tel`: 전화번호 입력을 받는다. 전화번호 형식으로 제한하지 않고 숫자와 일부 특수 문자를 받는다.
- `url`: URL 형식의 입력을 받는다. 브라우저에서 URL 형식을 검증할 수 있다.
- `date`: 날짜 입력을 받는다. 브라우저에서 날짜 선택 UI를 제공할 수 있다.
- `time`: 시간 입력을 받는다. 브라우저에서 시간 선택 UI를 제공할 수 있다.
- `checkbox`: 다중 선택 입력을 받는다. 선택된 상태와 선택되지 않은 상태를 가진다.
- `radio`: 라디오 버튼 입력을 받는다. 동일 그룹 내 하나의 옵션만 선택할 수 있다.
- `file`: 파일 입력을 받는다. 사용자가 파일을 선택할 수 있다.

### 질문 3. label tag는 어떤 역할을 하며 label로 input field를 감싸면 어떻게 동작하는지 설명해 주세요.

#### label tag의 역할

- 입력 요소에 대한 설명을 제공하는 역할을 한다.
- 사용자가 입력 요소의 목적을 이해하기 쉽도록 돕는다.

#### label로 input field를 감싸면 어떻게 동작하는지

```
<label>
Username:
<input type="text" />
</label>
```

- 위와 같이 `label` 태그 내 `input` 요소를 포함하여 감싸면, label 클릭 시 내부의 `input` 요소가 포커스를 받는다.
- 이러한 방식으로 `label` 태그를 사용하면 접근성을 높일 수 있다.
Loading