https://www.inflearn.com/course/%ED%95%9C%EC%9E%85-%ED%81%AC%EA%B8%B0-nextjs?srsltid=AfmBOop98SToIvyP4ZLiwetJfX_FMn0dbu097kRsUWsuX9BOUxCY1Ihi
위 내용을 바탕으로 강의를 수강하며 정리하였습니다.
브라우저에서 호출할 수 있는 서버에서 실행되는 비동기 함수
클라이언트인 브라우저에서 특정 폼의 제출 이벤트가 발생했을 때 서버에서만 실행되는 함수를 브라우저가 직접 호출하면서 데이터까지 폼 데이터 형식으로 전달할 수 있게 해주는 기능
= 클라이언트인 브라우저 측에서 특정 폼, 특정 양식의 제출이 발생했을 때 서버 측에서만 실행되는 어떠한 함수를 실행시켜주는 기능
함수의 최상단에 useServer라는 지시자를 붙임
→ 브라우저가 아닌 서버에서만 실행이 되는 서버 액션으로 설정
vscode로 열기
vscode에서 .../onebite-next/ 폴더로 열기
터미널에서 section07 폴더 생성
vscode에서 /onebite-next/section07/ 폴더 생성
파일 옮기기
/onebite-next/section06 폴더에 있는 코드 중 아래 사진에 해당하는 코드만 선택하여 /onebite-next/section07 폴더로 옮기기
필요한 모듈 다운로드
생성된 /section07/ 폴더로 vscode에서 다시 열기
→ vscode 터미널을 열어서 npm i 명령어 실행
개발 모드로 넥스트 앱 실행
생성된 /section07/ 폴더로 vscode에서 다시 열기
→ vscode의 터미널 열기
→ npm run dev 명령어 실행
→ http://localhost:3000/ 로 이동하면 확인 가능
→ (종료 시에는) Ctrl+D나 Ctrl+C 입력
백엔드 서버 열기
vscode에서 새 창을 열고 /onebite-books-server/ 폴더로 열기
→ vscode 터미널을 열고 npm run start 명령어 실행
서버 액션을 위한 브라우저의 폼 생성: /src/app/book/[id]/page.tsx 코드 수정
https://github.com/onebite-nextjs/vod__onebite-next-codes/blob/main/section07/chapter01/src/app/book/%5Bid%5D/page.tsx
서버 액션을 위해 생성한 브라우저의 폼의 디자인 수정: /src/app/book/[id]/page.module.css 코드 수정
https://github.com/onebite-nextjs/vod__onebite-next-codes/blob/main/section07/chapter01/src/app/book/%5Bid%5D/page.module.css
vscode로 section07 폴더 열기
→ vscode 터미널을 열어서 npm run dev로 개발 모드 서버 열기
vscode에서 새 창을 열고 /onebite-books-server/ 폴더로 열기
→ vscode 터미널을 열고 npm run start로 백엔드 서버 열기
백엔드 서버에서 제공하는 리뷰와 관련된 API 기능들을 빠르게 이용해보기
api 호출: /src/app/book/[id]/page.tsx 코드 수정
https://github.com/onebite-nextjs/vod__onebite-next-codes/blob/main/section07/chapter02/src/app/book/%5Bid%5D/page.tsx
가독성을 위해 서버 액션을 별도의 파일로 분리: /src/actions/create-review.action.ts 코드 생성
https://github.com/onebite-nextjs/vod__onebite-next-codes/blob/main/section07/chapter02/src/actions/create-review.action.ts
vscode로 section07 폴더 열기
→ vscode 터미널을 열어서 npm run dev로 개발 모드 서버 열기
vscode에서 새 창을 열고 /onebite-books-server/ 폴더로 열기
→ vscode 터미널을 열고 npm run start로 백엔드 서버 열기
도서의 리뷰들을 불러오는 기능 구현: /src/app/book/[id]/page.tsx 코드 수정
https://github.com/onebite-nextjs/vod__onebite-next-codes/blob/main/section07/chapter03/src/app/book/%5Bid%5D/page.tsx
하나의 리뷰를 렌더링 할 리뷰 아이템 컴포넌트 생성: /src/components/review-item.tsx 코드 생성
https://github.com/onebite-nextjs/vod__onebite-next-codes/blob/main/section07/chapter03/src/components/review-item.tsx
리뷰 아이템 컴포넌트의 css 코드 생성: /src/components/review-item.module.css 코드 생성
https://github.com/onebite-nextjs/vod__onebite-next-codes/blob/main/section07/chapter03/src/components/review-item.module.css
컴포넌트를 불러와서 렌더링 하도록 수정: /src/app/book/[id]/page.tsx 코드 수정
https://github.com/onebite-nextjs/vod__onebite-next-codes/blob/main/section07/chapter03/src/app/book/%5Bid%5D/page.tsx
ReviewEditor 컴포넌트를 따로 분리: /src/components/review-editor.tsx 코드 생성
https://github.com/onebite-nextjs/vod__onebite-next-codes/blob/main/section07/chapter03/src/components/review-editor.tsx
ReviewEditor 컴포넌트의 css 코드 생성: /src/components/review-editor.module.css 코드 생성
https://github.com/onebite-nextjs/vod__onebite-next-codes/blob/main/section07/chapter03/src/components/review-editor.module.css
vscode로 section07 폴더 열기
→ vscode 터미널을 열어서 npm run dev로 개발 모드 서버 열기
vscode에서 새 창을 열고 /onebite-books-server/ 폴더로 열기
→ vscode 터미널을 열고 npm run start로 백엔드 서버 열기
지금까지는 사용자가 리뷰를 작성했을 때 브라우저를 한번 새로고침 해줬어야지만 자신이 작성한 리뷰 확인이 가능했음
→ 리뷰가 등록하자마자 바로 등록되도록 수정 필요
/src/actions/create-review.action.ts 코드 수정RevalidatePath 메서드를 사용하면 데이터 캐시 + 풀 라우트 캐시까지 함께 삭제
(기존과 동일) 해당하는 페이지만 깔끔하게 재검등하도록 동작
: 두 번째 인수는 생략하고 첫 번째 인수로 특정 페이지의 주소만 명시
특정 경로의 모든 동적 페이지를 재검증
: RevalidatePath() 메서드 호출할 때, 첫 번째 인수로 폴더의 경로를 적고 두 번째 인수로 문자열로 "page"로 작성
→ 첫 번째 경로와 같은 동적 페이지들이 전부 재검증
특정 레이아웃을 갖는 모든 페이지를 재검증
: RevalidatePath() 메서드 호출할 때, 첫 번째 인수로 폴더의 경로를 적고 두 번째 인수로 문자열로 "layout"로 작성
→ 첫 번째 경로와 같은 레이아웃 페이지들이 전부 재검증
모든 페이지 재검증
: RevalidatePath() 메서드 호출할 때, 첫 번째 인수로 /를 적고 두 번째 인수로 문자열로 "layout"로 작성
→ 모든 페이지들이 전부 재검증
태그 값을 기준으로 데이터 캐시 재검증
vscode로 section07 폴더 열기
→ vscode 터미널을 열어서 npm run dev로 개발 모드 서버 열기
vscode에서 새 창을 열고 /onebite-books-server/ 폴더로 열기
→ vscode 터미널을 열고 npm run start로 백엔드 서버 열기
/src/actions/create-review.action.ts 코드 수정
다시 들어보기
리액트 19버전부터 추가되는 완전 최신의 리액트 훅
폼 태그의 상태를 굉장히 쉽게 핸들링할 수 있도록 도와주는 여러가지 기능 보유
vscode로 section07 폴더 열기
→ vscode 터미널을 열어서 npm run dev로 개발 모드 서버 열기
vscode에서 새 창을 열고 /onebite-books-server/ 폴더로 열기
→ vscode 터미널을 열고 npm run start로 백엔드 서버 열기
중복 제출 방지 등을 위한 코드 수정
src/components/review-editor.tsx 코드 수정
다시 듣기
vscode로 section07 폴더 열기
→ vscode 터미널을 열어서 npm run dev로 개발 모드 서버 열기
vscode에서 새 창을 열고 /onebite-books-server/ 폴더로 열기
→ vscode 터미널을 열고 npm run start로 백엔드 서버 열기
리뷰 아이템들에 있는 삭제하기 버튼을 클릭하면 하나의 리뷰를 데이터베이스로부터 삭제하는 기능 생성 ▶ 서버 액션을 통해 구현
/src/components/review-item.tsx 코드 수정
https://github.com/onebite-nextjs/vod__onebite-next-codes/blob/main/section07/chapter07/src/components/review-item.tsx
/src/components/review-item-delete-button.tsx 코드 생성
https://github.com/onebite-nextjs/vod__onebite-next-codes/blob/main/section07/chapter07/src/components/review-item-delete-button.tsx
/src/actions/delete-review.action.ts 코드 생성
https://github.com/onebite-nextjs/vod__onebite-next-codes/blob/main/section07/chapter07/src/actions/delete-review.action.ts