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

[고학영] week13 #418

Conversation

hakyoung12
Copy link
Collaborator

요구사항

기본

  • React 프로젝트에서 진행했던 작업물을 Next.js 프로젝트에 맞게 변경 및 이전해 주세요.
  • 팀내 2 ~ 3명이 짝을 지어 페어프로그래밍으로 로그인, 회원가입 페이지에 사용하는 Input 컴포넌트를 만들어 주세요.
  • Vercel로 Github 레포지토리를 연결해 Next.js 프로젝트를 배포해 주세요.

심화

주요 변경사항

  • vercel 배포 중 오류가 발생하여 해결 후 올리겠습니다

스크린샷

image

멘토에게

  • 셀프 코드 리뷰를 통해 질문 이어가겠습니다.

@hakyoung12 hakyoung12 changed the base branch from main to part3-고학영 May 12, 2024 14:14
@hakyoung12 hakyoung12 closed this May 12, 2024
@hakyoung12 hakyoung12 reopened this May 12, 2024
@hakyoung12 hakyoung12 closed this May 12, 2024
@hakyoung12 hakyoung12 reopened this May 12, 2024
@hakyoung12 hakyoung12 requested a review from o-seung-yeon May 12, 2024 14:49
@hakyoung12 hakyoung12 added 매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다. 미완성🫠 죄송합니다.. labels May 12, 2024
@hakyoung12 hakyoung12 force-pushed the part3-고학영-week13 branch from c580fd0 to d1f63f4 Compare May 13, 2024 03:21
Copy link
Collaborator

@o-seung-yeon o-seung-yeon left a comment

Choose a reason for hiding this comment

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

file changed 가 많아서 Next 설정과 컴포넌트 단위를 중점으로 봤는데요.
전반적으로 로직을 깔끔하게 잘 작성하시네요~
컴포넌트를 분리해 더 파악하기 쉽고, 유지보수하기 쉬운 코드로 개선할 수 있을 것 같아요!
다음주차 미션 땐 vercel 배포도 완료해주세요~!
고생하셨습니다 👏

Comment on lines +25 to +28
"pages/folder.jsx",
"pages/folder.jsx",
"pages/folder.jsx",
"pages/folder.jsx"
Copy link
Collaborator

Choose a reason for hiding this comment

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

중복이 있습니다

Comment on lines +24 to +28
"components/Input.jsx",
"pages/folder.jsx",
"pages/folder.jsx",
"pages/folder.jsx",
"pages/folder.jsx"
Copy link
Collaborator

Choose a reason for hiding this comment

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

이 파일들을 include 에 명시해서 추가하신 이유가 있나요?

Comment on lines +12 to +13
"@svgr/webpack": "^8.1.0",
"@types/classnames": "^2.3.1",
Copy link
Collaborator

Choose a reason for hiding this comment

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

이 패키지들은 개발 환경에서만 필요하고 실제 프로덕션 환경에선 없어도 잘 동작할 것 같아요
npm install 시 --save-dev 옵션을 살펴보시면 좋을 것 같습니다!

/coverage

# production
/build
Copy link
Collaborator

Choose a reason for hiding this comment

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

빌드 결과물로 생성되는 dist 폴더도 gitignore 에 추가해주세요~

Copy link
Collaborator

Choose a reason for hiding this comment

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

다른 페이지 컴포넌트의 파일명 컨벤션이 소문자로 시작하는 것 같습니다. 이 페이지도 맞춰주세요~

import KebabMenu from "./KebabMenu";
import Image from "next/image";

interface CardListItemProps {
Copy link
Collaborator

Choose a reason for hiding this comment

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

link, folder 의 타입도 다른 곳에서 정의한 인터페이스와 동일한 구조라면 하나로 관리해주세요~
비슷한 타입이 많은 것 같아요. 검색해서 일괄적으로 적용해주세요!

Comment on lines +141 to +173
<div className={styles.folderLinkList__folderEditBtns}>
<button
className={styles.folderLinkList__folderEditBtn}
onClick={(e) => {
e.preventDefault();
setModalOpen("shareLink");
}}
>
<div className={styles.folderLinkList__folderEditIcon}>
<Image fill src={shareBtn} alt="공유하기" />
</div>
공유
</button>
<button
className={styles.folderLinkList__folderEditBtn}
onClick={(e) => {
e.preventDefault();
setModalOpen("alterName");
}}
>
<div className={styles.folderLinkList__folderEditIcon}>
<Image fill src={renameBtn} alt="이름변경" />
</div>
이름 변경
</button>

<button
className={styles.folderLinkList__folderEditBtn}
onClick={(e) => {
e.preventDefault();
setModalOpen("delete");
}}
>
Copy link
Collaborator

Choose a reason for hiding this comment

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

'전체'를 선택했을 때 이 부분만 표시되지 않는다면 조건부 렌더링되는 곳을 좁힐 수 있을 것 같아요.

<타이틀 />
{showTotal && <버튼들 />}
<카드리스트 />

이런식으로요!

{modalOpen === "addFolder" && (
<EditAndAddFolder
madalTitle={"폴더 추가"}
onClose={setModalOpen}
Copy link
Collaborator

Choose a reason for hiding this comment

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

onClose props 에 setModalOpen 을 넘겨서 모달을 닫는다는게 직관적이지 않아요.
살펴보니 modalOpen 에 빈 문자열을 넣거나 유효한 몇몇 문자열 외의 값을 넣어야 모달 컴포넌트가 언마운트 되는 것 같네요.
EditAndAddFolder 컴포넌트 내부를 보니 onClose 에 빈 문자열을 전달해서 닫게 되는데 이 말은 '빈 문자열을 전달해서 닫는다' 라는 지식을 EditAndAddFolder 가 알고 있다는 거고, 그렇게 되면 컴포넌트를 넘나들며 확인해야해서 유지보수가 어려워지는 경우가 많습니다.

간단히는 handleClose 같은 함수를 만들어 명시적으로 처리하는 게 좋을 것 같습니다.
그후에 퍼져있는 모달 관련 로직들을 관리하는 커스텀 훅을 만들면 좋을 것 같아요!

Comment on lines +94 to +105
<button
className={styles.folderLinkList__addFolderButton__mobile}
onClick={(e) => {
e.preventDefault();
setModalOpen("addFolder");
}}
>
폴더 추가
<div className={styles.folderLinkList__addFolderIcon}>
<Image fill src={addBtnMobile} alt="폴더추가" />
</div>
</button>
Copy link
Collaborator

Choose a reason for hiding this comment

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

플로팅 형태의 폴더 추가 버튼 컴포넌트도 분리하면 어떨까요?
css mediaquery 로 표시 여부를 처리하는 것도 좋은데 모바일 사이즈임을 체크하는 커스텀 훅을 만들어 사용하면 더 파악하기 좋은 코드가 될 것 같아요.
커스텀 훅은 멘토링 시간에 다뤄보면 좋을 것 같네요!

{isMobile && <FloatingButton />}

Comment on lines +66 to +79
<button
className={
folder.name === title
? styles.folderLinkList__folder__active
: styles.folderLinkList__folder
}
id={id?.toString()}
key={folder.id}
onClick={() => {
handleTitle(folder.name, folder.id);
}}
>
{folder.name}
</button>
Copy link
Collaborator

Choose a reason for hiding this comment

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

폴더 선택 버튼 컴포넌트를 분리해서 재사용하면 어떨까요?

@o-seung-yeon o-seung-yeon merged commit a9cc90b into codeit-bootcamp-frontend:part3-고학영 May 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다. 미완성🫠 죄송합니다..
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants