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 #419

Conversation

sj0724
Copy link
Collaborator

@sj0724 sj0724 commented May 12, 2024

요구사항

기본

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

심화

주요 변경사항

  • 리액트 프로젝트에서 next로 마이그레이션

스크린샷

image

멘토에게

  • 아직 vercel로 배포는 못했습니다. 빠른 시일내에 배포까지 해보겠습니다.
  • 새로고침했을때 css적용이 안되는 문제를 해결하기 위해 많은 시도를 했는데 잘 안됩니다ㅜㅜ

@sj0724 sj0724 requested a review from o-seung-yeon May 12, 2024 15:23
@sj0724 sj0724 self-assigned this May 12, 2024
@sj0724 sj0724 added 매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다. 미완성🫠 죄송합니다.. labels May 12, 2024
@sj0724
Copy link
Collaborator Author

sj0724 commented May 13, 2024

https://5-weekly-mission-tau.vercel.app/
배포링크입니다!

@o-seung-yeon
Copy link
Collaborator

o-seung-yeon commented May 14, 2024

https://5-weekly-mission-tau.vercel.app/ 배포링크입니다!

@sj0724
401 에러로 vercel 홈페이지로 리디렉션되는데 확인 부탁드립니다~

@sj0724
Copy link
Collaborator Author

sj0724 commented May 14, 2024

https://5-weekly-mission-tau.vercel.app/ 배포링크입니다!

@sj0724 401 에러로 vercel 홈페이지로 리디렉션되는데 확인 부탁드립니다~

@o-seung-yeon
https://5-weekly-mission-dtln.vercel.app/
다시 배포했습니다!

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 설정과 컴포넌트 단위를 중점으로 리뷰했습니다.
전반적으로 커스텀 훅을 잘 사용하시네요.
역할을 더 분리할 순 없을지, state 를 더 줄일 순 없을지 고민하시면 더 유지보수하기 좋은 코드로 개선할 수 있을 것 같아요!
고생하셨습니다 👏

Comment on lines +14 to +31
useEffect(() => {
switch (id) {
case 1:
setSectionImage('/img_1.png');
break;
case 2:
setSectionImage('/img_2.png');
break;
case 3:
setSectionImage('/img_3.png');
break;
case 4:
setSectionImage('/img_4.png');
break;
default:
break;
}
}, [id]);
Copy link
Collaborator

Choose a reason for hiding this comment

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

소개 내용을 sectionDescription 객체로 관리하고 있는데 이미지도 객체에 같이 관리하면 어떨까요?

Comment on lines +100 to +101
{folderName ? folderName : '전체'}
{folderId > 0 && (
Copy link
Collaborator

Choose a reason for hiding this comment

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

'전체'를 선택했을 때 folderName 에는 빈 문자열, folderId 에는 0 이 설정되는 것 같네요.
의도를 명확히 표현하기 위해 불리언 변수를 하나 만들어서 사용하면 어떨까요?

const isTotal = folderName === '' && folderId === 0;
// ...
return (
  // ...
  {isTotal && '전체'}
  {!isTotal && <버튼들 />}
  // ...
};

};
}, [loading]);

return (
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 +72 to +76
setSearchKeyWord={function (
value: React.SetStateAction<string>
): void {
throw new Error('Function not implemented.');
}}
Copy link
Collaborator

Choose a reason for hiding this comment

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

구현 전인걸까요?

export async function getSampleFolder() {
try {
const { data } = await axios.get('/sample/folder');
if (data && data.folder && data.folder.links) {
Copy link
Collaborator

Choose a reason for hiding this comment

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

옵셔널 체이닝 연산자를 써서 간략하게 줄이면 어떨까요?
data?.folder?.links

Comment on lines +28 to +43
useEffect(() => {
function handleClickOutside(e: any) {
if (
kebabView &&
kebabRef.current &&
!kebabRef.current.contains(e.target)
) {
setKebaView(false);
}
}

document.addEventListener('mousedown', handleClickOutside);
return () => {
document.removeEventListener('mousedown', handleClickOutside);
};
}, [kebabView]);
Copy link
Collaborator

Choose a reason for hiding this comment

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

kebabView 와 이 로직을 커스텀 훅으로 분리하면 어떨까요?

Comment on lines +14 to +15
setFolderId: React.Dispatch<React.SetStateAction<number>>;
setFolderName: React.Dispatch<React.SetStateAction<string>>;
Copy link
Collaborator

Choose a reason for hiding this comment

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

onSelect: (folder: Folder) => void;
하나로 관리할 수 있을 것 같아요~

setFolderName: React.Dispatch<React.SetStateAction<string>>;
setFolderId: React.Dispatch<React.SetStateAction<number>>;
}) {
const [linkSelected, setLinkSelected] = useState<string[]>([]);
Copy link
Collaborator

Choose a reason for hiding this comment

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

선택된 폴더 id 만 들고있으면 배열로 관리하지 않아도 될 것 같아요!

id="word"
value={text}
/>
<S.SearchIcon src={inputImage} alt="돋보기 아이콘" />
Copy link
Collaborator

Choose a reason for hiding this comment

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

src 로 넘겨주는 값은 삼항 연산자로 간단하게 처리하면
inputImage 변수를 지울 수 있을 것 같아요!


const openModal = (modalName: string) => {
dispatch({ type: 'OPEN_MODAL', modalName });
console.log(modalName);
Copy link
Collaborator

Choose a reason for hiding this comment

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

pr 생성 전 로그는 지워주세요!

@o-seung-yeon o-seung-yeon merged commit edd3579 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.

2 participants