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

Merged

Conversation

bk-git-hub
Copy link
Collaborator

요구사항

기본

  • 기존 React 프로젝트에서 진행했던 작업물을 Next.js 프로젝트에 맞게 변경 및 이전해 주세요.

심화

주요 변경사항

  • next js 적용

스크린샷

멘토에게

  • 14주차 위클리 미션이 이전에 진행했던 로그인페이지를 다시 만드는 부분이라 그부분이랑 동시에 13주차 부분(폴더페이지, 쉐어 페이지)까지 진행하려 했습니다
  • 주말동안 몸살이나서 진행을 많이 못했네요..

bk-git-hub added 30 commits May 8, 2024 16:37
@bk-git-hub bk-git-hub changed the title Part3 김법균 [김법균] Week13 May 13, 2024
@bk-git-hub bk-git-hub requested a review from 1005hoon May 13, 2024 02:35
@bk-git-hub bk-git-hub added the 미완성🫠 죄송합니다.. label May 13, 2024
Copy link
Collaborator

@1005hoon 1005hoon left a comment

Choose a reason for hiding this comment

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

@bk-git-hub

법균님! 전반적으로 잘 작성해주셨네요
zod를 활용한 schema validation부터 useForm 활용까지
잘 활용하고 계십니다.

다만 몇가지 피드백 드리고 싶은 부분이 있는데요 우선 첫번째로 컨테이너 성 콤포넌트를 구조화 하는 부분이 아직 어려워 보입니다.

근데 이건 어려울 수 밖에 없는게, 특히 NextJS가 일정 부분은 서버사이드로 렌더링하고, 특정 부분에 대해서만 csr로 처리하도록 해주는 기능으로 인해 이 구조화가 훨씬 중요해지게 되었거든요. 따라서 이 부분 염두에 두고 콤포넌트를 조금 더 구조화 해볼 수 있는 방법을 찾아보면 어떨까 생각이 되어요.

고생 많으셨고, 조금 더 디테일한 피드백 코드단에 남겨두었으니 체크 부탁드릴게요!

Comment on lines +14 to +17
<Link href={'/'} className={styles.logo}>
<Image src={'/assets/images/logo.svg'} fill alt='Linkbrary' />
</Link>

Copy link
Collaborator

Choose a reason for hiding this comment

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

@bk-git-hub

일반 string literal을 attribute에게 전달하는 경우 {'/'} 형태보단 href='/' 처럼 바로 꽂아주세요!

Comment on lines +6 to +8
text: string;
linkText: string;
link: string;
Copy link
Collaborator

Choose a reason for hiding this comment

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

@bk-git-hub

text, linkText, link가 생각보다 비직관적으로 와닿는데요
이 부분을 조립할 수 있도록 해보는건 어떤가요?
외부에서 사용한다면 다음과 같이 활용할 수 있도록요

<AuthHeader>
  <AuthHeader.Description> 회원이 아니신가요?</AuthHeader.Description>
  <AuthHeader.Link to="/signup"> 회원가입 하러가기</AuthHeader.Link>
</AuthHeader>

<AuthHeader>
  <AuthHeader.Description> 이미 가입하셨나요??</AuthHeader.Description>
  <AuthHeader.Link to="/login"> 로그인 하러가기</AuthHeader.Link>
</AuthHeader>

Copy link
Collaborator

Choose a reason for hiding this comment

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

type={type}
disabled={disabled}
>
{disabled ? '처리중' : children}
Copy link
Collaborator

Choose a reason for hiding this comment

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

@bk-git-hub

오 되게 잘 만들어두셨는데요?

disabled상태인 경우 처리중으로 보여질 필요는 없을 것 같아요!
버튼 콤포넌트에 disabled 처리를 함으로써 조금 뿌얘지고 - opacity 50%정도 - 커서 block이 되면 그것으로도 적당하지 않나 생각이 됩니다

children?: React.ReactNode;
onClick?: () => void;
className?: string;
type?: 'button' | 'submit' | 'reset' | undefined;
Copy link
Collaborator

Choose a reason for hiding this comment

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

@bk-git-hub

type?: ... 를 했다면 굳이 undefined를 전달하지 않아도 되어요
또한 조금만 더 욕심내본다면, 우리가 Button 콤포넌트의 prop을 바로 네이티브 요소인 button에게 전달하잖아요.
그럼 일반 button 요소가 받아올 수 있는 모든 prop들은 우리 커스텀 버튼이 활용할 수 있어야겠죠?
이를 활용하기 위해 리액트에서 제공해주는 button이 기본적으로 지니는 attribute props 타입이 있습니다.

interface ButtonProps extends ... 하는 식으로 버튼이 기본적으로 지녀야 하는 상태들을 상속하도록 타입을 설정해보면 어떨까요?

import instagramLogo from '@/public/assets/images/instagram_logo.svg';
import styles from './Footer.module.css';

export default function Footer() {
Copy link
Collaborator

Choose a reason for hiding this comment

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

@bk-git-hub

어떤곳은 arrow func으로 콤포넌트 선언을 하고
어떤곳은 function 선언문으로 콤포넌트 선언을 하는데요
통일 시켜보면 어떨까요?

>
<input
{...register('email')}
type='text'
Copy link
Collaborator

Choose a reason for hiding this comment

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

@bk-git-hub
type='email'

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

해당 타입을 이메일로 지정할 경우 브라우저에서 알아서 유효성 검사를 실시하고 브라우저 자체 에러문구가 떠서 제가 구현한 유효성 검사를 하기위해 text로 지정해놨습니다

export default function SocialAuth({ text }: SocialAuthProps) {
return (
<div className={styles.socialAuthWrapper}>
<span>{text}</span>
Copy link
Collaborator

Choose a reason for hiding this comment

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

@bk-git-hub

이거가 prop으로 받아오는 이유가 있나요?

Copy link
Collaborator

Choose a reason for hiding this comment

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

text라고 받아오기보단, social-auth 콤포넌트의 제목으로 활용되는 녀석으로 보이는데 title이라고 해보는건 어떨까 의견을 드려봅니다

Comment on lines +32 to +34
<Button className={styles.addLinkButton} onClick={handleAddLinkClick}>
링크 추가하기
</Button>
Copy link
Collaborator

Choose a reason for hiding this comment

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

@bk-git-hub

링크 추가하는 버튼을 따로 콤포넌트화 해서 붙여넣으면 pages/index.tsx 는 ssr로 처리가 될 수 있을 것 같아요
단순 router.push 기능 하나만을 위해 상위에서 구현함으로써 렌더링 퍼포먼스 최적화를 손해보기엔 너무 아쉬운 작업으로 보입니다!

link='/signin'
/>
<SignUpForm />
<SocialAuth text='다른 방식으로 가입하기' />
Copy link
Collaborator

Choose a reason for hiding this comment

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

@bk-git-hub

아 여기서 달라지는군요!
위에 social auth 관련 코멘트 무시해주세요

Copy link
Collaborator

Choose a reason for hiding this comment

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

@bk-git-hub

이제 zod를 쓰니 굳이 필요없지 않을까 싶어요!

@1005hoon 1005hoon merged commit 04dfea4 into codeit-bootcamp-frontend:part3-김법균 May 18, 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