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

[윤민호] sprint8 #115

Conversation

Bear4243
Copy link
Collaborator

@Bear4243 Bear4243 commented Mar 1, 2025

요구사항

기본

[o] Github에 스프린트 미션 PR을 만들어 주세요.
[o] Next.js를 사용해 진행합니다.

자유 게시판 페이지

  • 게시글 목록에서 드롭다운을 사용하여 "최신 순"으로 정렬할 수 있도록 합니다.

  • 본인이 이전 미션에서 생성한 게시글 목록 조회 API를 활용해 GET 메서드로 데이터를 가져옵니다.

  • 게시글 제목에 검색어가 일부 포함되면 해당 게시글을 검색할 수 있도록 합니다.

  • 이미지는 디폴트 이미지로 프론트엔드에서 처리해 주세요.

  • 게시글 닉네임 및 좋아요 개수 역시 임의값으로 프론트엔드에서 처리해주세요.

  • 베스트 게시글은 최신순 3개 게시글을 요청으로 데이터를 가져와 구현해주세요.

  • 자유게시판 페이지에서 특정 게시글을 클릭하면 해당 게시물의 상세 페이지로 이동합니다.
    게시글 등록 & 수정 페이지

  • 각 input 필드에 정확한 placeholder 값을 입력합니다.

  • 모든 input 필드에 값을 입력하면 '등록' 버튼이 활성화됩니다.

  • 본인이 이전 미션에서 생성한 게시글 생성 API를 활용해 POST 메서드로 게시글을 등록합니다.

  • '등록' 버튼을 누르면 해당 게시물 상세 페이지로 이동합니다.

  • 게시글 수정 페이지 UI는 게시글 등록 페이지와 동일합니다.

  • 본인이 이전 미션에서 생성한 게시글 상세 API의 PATCH 메소드를 사용하여 게시물을 수정합니다.
    게시글 상세 페이지

  • 본인이 이전 미션에서 생성한 게시글 상세 API의 GET 메소드를 사용하여 데이터를 가져옵니다.

  • 본인이 이전 미션에서 생성한 게시글 상세 API의 DELETE 메소드를 사용하여 게시물을 삭제합니다.

  • 댓글 input에 값을 입력하면 '등록' 버튼이 활성화됩니다.

  • 본인이 이전 미션에서 생성한 댓글 생성 API를 활용해 POST 메소드로 댓글을 등록합니다.

  • 본인이 이전 미션에서 생성한 댓글 생성 API를 활용해 PATCH 메소드로 댓글을 수정합니다.

  • 본인이 이전 미션에서 생성한 댓글 생성 API를 활용해 DELETE 메소드로 댓글을 삭제합니다.

심화

  • 디자인 시안에 따라 반응형 디자인을 구현합니다.
    (생략 가능) 원한다면 지금까지 진행한 모든 React 코드를 Next.js로 마이그레이션 해주세요
    주요 변경사항
    js, page router 기반 next.js 사용

멘토에게

  • 너무 안하고 놀았던거 같습니다 죄송합니다 나머지들은 빨리 끝내서 올리겠습니다

스크린샷

sprint-edu and others added 30 commits November 27, 2024 11:24
git add .
@Bear4243 Bear4243 changed the title Next 윤민호 mission08 [윤민호] sprint8 Mar 1, 2025
@Bear4243 Bear4243 requested a review from rjc1704 March 1, 2025 23:10
export default function Home() {
return (
<>
<Header />
Copy link
Collaborator

@rjc1704 rjc1704 Mar 3, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Header 컴포넌트는 모든 페이지에서도 공통적으로 적용되는 컴포넌트이기 때문에, _app.tsx 에서 <Component {...pageProps} /> 위에 적용해주시면 깔끔해지겠습니다.

alt={"베스트이미지"}
width={102}
height={30}
></Image>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image 컴포넌트처럼 children 요소를 받을 필요가 없는 경우, 항상 Self-Closing 형식으로 표기해주는 습관을 들여주시는 것을 권장 드립니다.

</div>
<div id="footer_ad">
<a target="_blank" href="https://www.facebook.com/">
<Link href={"/bulletin-board"}></Link>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Link 컴포넌트는 DOM으로 변환 시 a 태그가 됩니다. 그리고 현재코드는 a 태그의 자식으로 Link컴포넌트(a태그)를 가지고 있으니 a태그 중첩으로 HTML 명세 위반에 해당합니다. a태그 간에는 중첩이 있으면 안됩니다. 여기있는 Link 컴포넌트는 제거해도 무방해 보입니다.

@rjc1704
Copy link
Collaborator

rjc1704 commented Mar 3, 2025

민호님 스프린트 작업하시느라 고생하셨습니다. 일부 미비한 사항들은 시간내셔서 한번 꼭 해보시면 좋습니다.

  • 컴포넌트명과 모듈파일명은 모두 동일하게 해주고 PascalCase 로 작성하는 것이 리액트 컨벤션입니다. footer.tsx 가 아니라 Footer.tsx
  • page router 에서 api routes 사용하시려면 pages/api/ 폴더안에 bulletinBoardApi.ts 로 파일만드셨으면 handler 라는 함수명으로 프레임워크 규칙에 따라 작성해주셔야 합니다. (아래 공식문서를 꼭 확인해보시면 좋겠습니다.) 지금처럼 별도의 api 함수를 모아두는 방식을 사용하시려면 pages/ 폴더 밖에서 services/ 폴더 또는 apis/ 폴더 작성하셔서 보관해서 사용하는 것이 좋겠습니다.
    https://nextjs.org/docs/pages/building-your-application/routing/api-routes
  • express 서버에서 api 를 아직 작업완료 하지 않은 것으로 보입니다. 앞으로 기본요구사항에 해당하는 api 작업 먼저 마무리하고 Next.js 로 프론트 작업 진행하는 것을 적극 권장 드립니다.

@rjc1704 rjc1704 merged commit 8fdb663 into codeit-sprint-fullstack:next-윤민호 Mar 3, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants