Skip to content

Commit a0cb87b

Browse files
committed
update post
1 parent 9f69efb commit a0cb87b

File tree

10 files changed

+396
-17
lines changed

10 files changed

+396
-17
lines changed

content/posts/프로젝트/당근마켓 클론코딩/당근마켓 클론코딩.md

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ tags:
55
- study
66
- clone
77
createdAt: 2025-06-13 11:29:34
8-
modifiedAt: 2025-07-01 15:59:57
8+
modifiedAt: 2025-07-01 17:52:35
99
publish: 프로젝트/당근마켓 클론코딩
1010
related: ""
1111
series: ""
@@ -15,11 +15,39 @@ series: ""
1515

1616
![당근마켓 클론코딩 랜딩](_assets/attachments/당근마켓%20클론코딩/carrot-landing.png)
1717

18+
- [레포지토리](https://github.com/lazy-dinosaur/carrot-market-clone)
19+
20+
## 프로젝트 정의
21+
1822
NomadCoders의 [당근마켓 클론코딩](https://nomadcoders.co/carrot-market/) 강의를 수강하며 Next.js와 Tailwind CSS 그리고 Prisma에 대한 복습과 해당 내용을 블로그에 올리는것을 목표로 한다.
1923

20-
- [레포지토리](https://github.com/lazy-dinosaur/carrot-market-clone)
24+
## 계획 및 할일
25+
26+
NomadCoders 강의에서 제공하는 파트 순서대로 진행한다.
27+
28+
- [x] Tailwind 파트
29+
- [x] Authentication UI 파트
30+
- [x] ServerAction 파트
31+
- [ ] Validation 파트
32+
- [ ] Prisma 파트
33+
- [ ] Authentication 파트
34+
- [ ] Social Authentication 파트
35+
- [ ] Products 파트
36+
- [ ] Product Upload 파트
37+
- [ ] Modals 파트
38+
- [ ] Caching 파트
39+
- [ ] Optimistic Updates 파트
40+
- [ ] Realtime Chat 파트
41+
- [ ] Live Streaming 파트
42+
- [ ] Next Js Extras 파트
43+
- [ ] Deployment 파트
44+
- [ ] Planetscale 파트
2145

22-
## 프로젝트트 생성
46+
## 핵심 노트 및 자료
47+
48+
### 내부 노트
49+
50+
#### 프로젝트트 생성
2351

2452
next.js로 프로젝트를 생성한다.
2553

@@ -40,3 +68,9 @@ next.js로 프로젝트를 생성한다.
4068
- [[당근마켓 클론코딩으로 Tailwind 복습하기]]
4169
- [[당근마켓 클론코딩으로 Next.js 복습하기]]
4270
- [[당근마켓 클론코딩으로 Zod 배우기]]
71+
72+
### 외부 자료
73+
74+
## 주요 의사결정 기록
75+
76+
## 아이디어 및 메모

content/posts/프로젝트/당근마켓 클론코딩/당근마켓 클론코딩으로 Next.js 복습하기.md

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ tags:
44
- carrot-market
55
- study
66
createdAt: 2025-06-30 08:48:51
7-
modifiedAt: 2025-07-01 16:01:14
7+
modifiedAt: 2025-07-02 12:24:58
88
publish: 프로젝트/당근마켓 클론코딩
99
related:
1010
- "[[당근마켓 클론코딩]]"
@@ -39,7 +39,6 @@ my-next-app/
3939
```
4040

4141
- `app/`: 애플리케이션의 모든 라우트, 컴포넌트, 로직이 위치하는 핵심 디렉토리.
42-
4342
- `layout.tsx`: 모든 페이지에 공통으로 적용되는 최상위 레이아웃. `<html>`, `<body>` 태그를 포함.
4443
- `page.tsx`: 특정 경로의 UI를 정의하는 기본 페이지 파일. app/page.tsx는 루트 경로(/)에 해당.
4544
- `loading.tsx`: 해당 경로의 콘텐츠가 로드되는 동안 보여줄 로딩 UI.
@@ -174,25 +173,24 @@ export default function FormBtn({ text }: FormBtnProps) {
174173
}
175174
```
176175

177-
### useFormState hook
176+
### useActionState hook
178177

179178
결과를 ui로 전달하는 역할
180-
서버액션의 결과 특히 오류 등을 가져올 수 있는 역할을 한다.
181-
182-
useFormState 훅은 인자로 action함수와 초기값을 받으며 클라이언트 컴포넌트에서 사용 가능하다.
183179

180+
서버액션의 결과 특히 오류 등을 가져올 수 있는 역할을 한다.
181+
useActionState 훅은 인자로 action함수와 초기값을 받으며 클라이언트 컴포넌트에서 사용 가능하다.
184182
ServerAction 의 경우 서버 컴포넌트에서 사용 가능하기 때문에 다른 파일로 따로 분리한 이후 불러와 사용해야 한다.
185183

186184
```tsx
187185
"use client";
188186
import FormBtn from "@/components/form-btn";
189187
import FormInput from "@/components/form-input";
190188
import SocialLogin from "@/components/social-login";
191-
import { useFormState } from "react-dom";
189+
import { useActionState } from "react";
192190
import { handleForm } from "./actions";
193191

194192
export default function Login() {
195-
const [state, action] = useFormState(handleForm, null);
193+
const [state, action] = useActionState(handleForm, null);
196194

197195
return (
198196
<div className="flex flex-col gap-10 py-8 px-6">

0 commit comments

Comments
 (0)